这对我没有任何意义。必须是错误的或痛苦明显的。
切片和切块后,我在vb.net中得到了2个具有以下值的变量:
strTag = "<#<span class=SpellE>vermittler_person_Name</span>>"
tmp = "<#<span class=SpellE>vermittler_person_Name</span>>"
比较变量给出了错误:
strTag = tmp ' ==> false
直接比较这些值得出真实:
"<#<span class=SpellE>vermittler_person_Name</span>>" = "<#<span class=SpellE>vermittler_person_Name</span>>" ' ==> true
两个都是字符串,我尝试了各种各样的东西:string.compare,string.equals,还有regex等等。所有其他字符串都采用了相似的结构,只是没有,只有不用
"vermittler_person_Name"
中间......有什么想法吗?
答案 0 :(得分:8)
我强烈怀疑虽然两个显示的字符串相等,但内部数据不是相等。那里可以有任意数量的非打印字符。
如果您能够重现这一点,我建议您查看有问题的字符串的每个字符的Unicode值。如果我是对的,我们将不会能够通过仅包含可见字符的SO帖子重现这一点,原因显而易见。
答案 1 :(得分:3)
你可以检查两个字符串的长度,看它们是否相同,或者将它们转换成相同的情况(上面或下面),看看是否会造成差异
答案 2 :(得分:0)
dim strTag as String
dim tmp as String
strTag = "<#<span class=SpellE>vermittler_person_Name</span>>"
tmp = "<#<span class=SpellE>vermittler_person_Name</span>>"
Console.WriteLine(strTag = tmp) 'prints True
您可以发布代码吗?它会进行比较吗?
编辑:在进行比较之前,将内容打印到控制台以查看它们是否不同
Console.WriteLine(strTag)
Console.WriteLine(tmp)
答案 3 :(得分:0)
我无法重现这个问题。我尝试了以下代码VS2008 RTM,其值为True
Sub Main()
Dim strTag = "<#<span class=SpellE>vermittler_person_Name</span>>"
Dim tmp = "<#<span class=SpellE>vermittler_person_Name</span>>"
Dim same = strTag = tmp
Stop
End Sub
您能提供问题的可运行示例代码吗?包括Visual Studio版本和选项(Strict,Explicit等等)
答案 4 :(得分:0)
我没有VB / .NET经验,但这听起来与java中的行为类似。
在java中,声明两个字符串对象。
String a = new String("aa");
String b = new String("aa");
a.equals(b)
将返回true
,但a==b
将返回false
。
同样"aa"=="aa"
将返回true。
这是因为"aa"
是一个文字字符串(类似于原语),而a
和b
是两个在内存中不同的不同对象。