我在这里看到很多关于字符串的问题,这些字符串在不平等的情况下返回,但请相信我不会遇到这个问题。
我有这个功能。
Protected Sub ChkValidStockCode()
If Not (Voucher.ValidStockCode = "") Then
Dim validcount As Int32 = 0
Dim validproduct As String = Product.GetProductNameByCode(Voucher.ValidStockCode)
For Each rpi As RepeaterItem In rptCart.Items
Dim ProductID As HyperLink = CType(rpi.FindControl("hlProductID"), HyperLink)
Dim ProductName As HyperLink = CType(rpi.FindControl("hlProductName"), HyperLink)
If (String.Compare(Voucher.ValidStockCode.ToString(), ProductID.ToString())) Then
validcount = validcount + 1
End If
Next
If validcount = 0 Then
txtVoucher.Text = "Sorry, this voucher is only valid when purchasing a " & validproduct
failed = True
Exit Sub
End If
End If
End Sub
它应该比较两个字符串并增加一个有效数字整数,如果它们相等,然后告诉你它是否到达转发器的末尾而没有找到任何匹配。
此测试中的变量是LT00004(Voucher.ValidStockCode)和SP08076(ProductID.ToString())
我已经多次运行代码,输出不同的字符串作为结果并且可以确认它们应该是什么,但是当我尝试比较它们(我希望validCount为0)时,它们返回匹配
我做了什么来解决这个问题?
答案 0 :(得分:4)
您可能想要Uzbek (LATN): Expected localized dollar string [$ 1] to contain currency symbol: [US$]
Uzbek (Uzbekistan,UZ): Expected localized dollar string [$ 1] to contain currency symbol: [US$]
而不是String.Equals()
。 String.Compare()
用于命令事物而不是测试是否相等。发生了什么Compare
返回一个非零数字,以满足条件。原因是因为在VB中“0”为假,但任何非零数字的计算结果为真。事情背后有一个完整的历史,但我离题了。