如何在asp.net vb中比较两个字符串

时间:2014-06-06 09:21:46

标签: asp.net .net vb.net asp.net-mvc-4 razor

我正在使用vb.net语言在Asp.net中开发Web应用程序,我使用

比较两个字符串
  

" ="和   " String.Equals()"

但我总是得到错误的结果

Dim decod As Decoder = Encoding.UTF8.GetDecoder()
Dim totByt As Byte() = Convert.FromBase64String(Request("numType"))
Dim chrCount As Integer = decod.GetCharCount(totByt, 0, totByt.Length)
Dim deco_char(chrCount) As Char
decod.GetChars(totByt, 0, totByt.Length, deco_char, 0)
Dim str As New String(deco_char)

If str = "MO" Or str.Equals("Mo") Then
       //Do somthing     

End If

请参阅我的Watch窗口输出 enter image description here 请告诉我为什么这会给我错误的条件以及如何解决它。

3 个答案:

答案 0 :(得分:3)

查看String.Equals()的文档,查看第三个参数comparisionType的可能值

String.Equals("MO", str, StringComparison.OrdinalIgnoreCase))

答案 1 :(得分:2)

str变量的长度为3而不是2,导致它与"MO"不同。

证明:

Dim decod As Decoder = Encoding.UTF8.GetDecoder()
Dim totByt As Byte() = Convert.FromBase64String("TU8=")
Dim chrCount As Integer = decod.GetCharCount(totByt, 0, totByt.Length)
Dim deco_char(chrCount) As Char
decod.GetChars(totByt, 0, totByt.Length, deco_char, 0)
Dim str As New String(deco_char)
Dim result1 = str.StartsWith("MO") ' is true
Dim result2 = str.Equals("MO") ' is false
Dim length = str.Length ' is 3

显然str"MO"不一样。

请记住,如果您声明一个类似的数组:

 Dim deco_char(2) ' an array of 3 elements

...元素的索引范围从0到2,因此它包含3个元素。

解决方案:如果您将第4行替换为:

 Dim deco_char(chrCount-1) As Char

..它会起作用,因为现在(在您的具体情况下)您的数组大小为2而不是3.

答案 2 :(得分:0)

试试这个:

str.Equals("MO", StringComparison.CurrentCultureIgnoreCase);