字符串对比问题
问题描述:
我有两个字符串,我想比较。字符串对比问题
A
是与属性Header
一个Silverlight的用户控制。
B
是一个纯System.String
。
当我比较喜欢这样:
if(A.Header == B)
我收到他们是不一样的。
如果我通过快速查看来检查VS2010中的值,值是相同的。如果我在两个对象上运行GetType
,我发现它们都是System.String
。
我知道我可以将它们与String.Compare
进行比较。
我虽然这样做在字符串==
总是比较值。在使用此Silverlight控件时是否有点奇怪?任何人都可以解释我在这里失踪了吗?
谢谢。
答
我发现它看起来像等于在Silverlight控件我使用已经overrided答案。
感谢John在这个线程给我的答案
答
它们有相同的长度吗?也许有尾随或领先的空间。
答
试试这个:
char[] arrayA = A.Header.ToCharArray();
char[] arrayB = B.ToCharArray();
,并与VS.对其进行检查应该清楚它们在哪些方面有所不同。
答
它们可能会有拖尾空间或看起来相同的东西,但具有不同的实际字符代码。像西里尔字符е
可能看起来像拉丁文e
,但它们不一样。尝试遍历字符,看看他们是否都一样。
答
可能是前导或尾随空格,区别在外壳中,也许它包含的字符看起来相同,但是具有不同的字符代码。
尝试以下操作:
if (string.Compare(A.Header.Trim(), B.Trim(), StringComparison.OrdinalIgnoreCase) == 0)
{
..
}
不`String.compare`返回TRUE;? – detunized 2011-02-01 10:43:10
'string.Compare`返回字符串是否相等? – ChrisF 2011-02-01 10:43:47
不,我只是双重检查 – 2011-02-01 10:44:05