字符串对比问题

问题描述:

我有两个字符串,我想比较。字符串对比问题

A是与属性Header一个Silverlight的用户控制。

B是一个纯System.String

当我比较喜欢这样:

if(A.Header == B) 

我收到他们是不一样的。

如果我通过快速查看来检查VS2010中的值,值是相同的。如果我在两个对象上运行GetType,我发现它们都是System.String

我知道我可以将它们与String.Compare进行比较。

我虽然这样做在字符串==总是比较值。在使用此Silverlight控件时是否有点奇怪?任何人都可以解释我在这里失踪了吗?

谢谢。

+0

不`String.compare`返回TRUE;? – detunized 2011-02-01 10:43:10

+0

'string.Compare`返回字符串是否相等? – ChrisF 2011-02-01 10:43:47

+0

不,我只是双重检查 – 2011-02-01 10:44:05

我发现它看起来像等于在Silverlight控件我使用已经overrided答案。

感谢John在这个线程给我的答案

Are string.Equals() and == operator really same?

它们有相同的长度吗?也许有尾随或领先的空间。

试试这个:

char[] arrayA = A.Header.ToCharArray(); 
char[] arrayB = B.ToCharArray(); 

,并与VS.对其进行检查应该清楚它们在哪些方面有所不同。

它们可能会有拖尾空间或看起来相同的东西,但具有不同的实际字符代码。像西里尔字符е可能看起来像拉丁文e,但它们不一样。尝试遍历字符,看看他们是否都一样。

可能是前导或尾随空格,区别在外壳中,也许它包含的字符看起来相同,但是具有不同的字符代码。

尝试以下操作:

if (string.Compare(A.Header.Trim(), B.Trim(), StringComparison.OrdinalIgnoreCase) == 0) 
{ 
    .. 
}