일치하지 않는 하이픈을 포함하는 문자열 비교
-
20-09-2019 - |
문제
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;
그러나 다시 쓰기 모듈에서 실행될 때 해당 값에 대해 true는 없습니다. 그러나 그들은 단위 테스트에서합니다. 그래서 문자열에 대한 무언가는 분명히 다릅니다
어떤 아이디어?
해결책
두 줄의 하이픈이 실제로 같은 문자임을 확인 했습니까? 캐릭터 세트가 재생할 수있는 트릭을 배제하기 위해 디버거의 캐릭터 코드를 검토합니다.
제휴하지 않습니다 StackOverflow