1
我有一個URL重寫模塊,看起來像這樣含有字符串比較連字符不匹配
public bool Match(Uri url)
{
string x = url.PathAndQuery.ToLowerInvariant();
string y = RuleData.ToLowerInvariant();
return x.Contains(y);
}
然而,在一個方法中,沒有爲下列值返回true:
X =「/ XX09 -02-09xx「; y =「09-02-09」;
,但如果我寫與原始字符串單元測試,如下圖所示,它並返回true
[Test]
public void Contains()
{
string x = "/xx09-02-09xx";
string y = "09-02-09";
Assert.IsTrue(x.Contains(y)); // this returns true
}
可能是什麼區別? 編碼? 文化? 曾試圖消除ToLowerInvarient(),但沒什麼區別
試圖在匹配方法
bool contains = x.Contains(y);
bool contains1 = x.IndexOf(y) != -1;
bool contains2 = x.IndexOf(y, StringComparison.OrdinalIgnoreCase) != -1;
bool contains3 = x.IndexOf(y, StringComparison.InvariantCultureIgnoreCase) != -1;
bool contains4 = x.IndexOf(y, StringComparison.CurrentCultureIgnoreCase) != -1;
,但沒有真正的回報這些值以下所有,重寫模塊在運行時。但他們在單元測試中。所以有關字符串的東西顯然是不同的
有什麼想法嗎?
這是我的想法。如果是我,我會在emacs中使用hexl模式檢查它。 – 2010-03-16 13:02:28
學校男孩錯誤 - 我需要修剪字符串,因爲有一個領先的空間。 * embarressed * – ChrisCa 2010-03-16 14:05:04