2010-12-16 5 views
0

Je voudrais comparer deux chaînes dans une application windows vb.netComparaison de chaînes

Imports System.Windows 

Public Class Form1 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Dim s As String = "$99" 
     Dim y As String = "$9899" 
     If s > y Then 
      MessageBox.Show("Hi") 


     End If 
    End Sub 
End Class 

Quelqu'un pourrait-on corriger la logique s'il y a une erreur dans tout cela?

+1

Qu'entendez-vous par comparer? Ordre alphabétique? Ou voulez-vous faire une comparaison numérique? –

+0

Vous obtiendrez probablement plus/une meilleure réponse si vous commencez à accepter des réponses utiles à vos questions précédentes. –

Répondre

0

Que voulez-vous dire comparer par la longueur ou le contenu?

dim result as string 
dim s as string = "aaa" 
dim y as string = "bbb" 
if s.length = y.length then result = "SAME" '= true 
if s = y then result = "SAME" '= false 
MessageBox.Show(result) 
0

Vous comparez des chaînes, et non des entiers.

Vous pouvez les comparer en tant que nombres entiers en remplaçant "$" par "", puis en le convertissant en nombre entier.

Remplacer le $ à ""

s = s.Replace("$", ""); 
y = y.Replace("$", ""); 

Convertir les deux nombres entiers

Dim result1 As Integer 
Dim result2 As Integer 

result1 = Convert.ToInt32(s) 
result2 = Convert.Toint32(y); 

Ensuite, vous pouvez faire

if (result1 > result2) { ... }

0
Dim sum1 As Int32 = 99 
    Dim sum2 As Int32 = 9899 
    'this works as expected because you are comparing the two numeric values' 
    If sum1 > sum1 Then 
     MessageBox.Show("$" & sum1 & " is greater than $" & sum2) 
    Else 
     MessageBox.Show("$" & sum2 & " is greater than $" & sum1) 
    End If 

    'if you really want to compare two strings, the result would be different than comparing the numeric values' 
    'you can work around this by using the same number of digits and filling the numbers with leading zeros' 
    Dim s As String = ("$" & sum1.ToString("D4")) '$0099' 
    Dim y As String = ("$" & sum2.ToString("D4")) '$9899' 
    If s > y Then 
     MessageBox.Show(s & " is greater than " & y) 
    Else 
     MessageBox.Show(y & " is greater than " & s) 
    End If 

Je recommande toujours d'utiliser des nombres entiers pour les valeurs numériques, en particulier si vous voulez les comparer. Vous pouvez mettre en forme les valeurs sous forme de chaîne après avoir comparé les valeurs numériques.