我在 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(),但这没有区别
在 Match 方法中尝试了以下所有方法
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;
但在重写模块中运行时,这些值都没有返回 true。但是他们在单元测试中做到了。所以关于弦的东西显然是不同的
有任何想法吗?