문제

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는 없습니다. 그러나 그들은 단위 테스트에서합니다. 그래서 문자열에 대한 무언가는 분명히 다릅니다

어떤 아이디어?

도움이 되었습니까?

해결책

두 줄의 하이픈이 실제로 같은 문자임을 확인 했습니까? 캐릭터 세트가 재생할 수있는 트릭을 배제하기 위해 디버거의 캐릭터 코드를 검토합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top