2013-07-09 4 views
0

내가 문자열에 저장하고 다음을 생성하는 방법을 가지고, 내가 뭘하려하는 것은 하드 코드입니다 문자열 이름 output여러 줄 문자열을 비교하는 방법

HDRPB509030978SENTRIC MUSIC        01.102013070914290620130709    
GRHREV0000102.100000000000 
REV0000000000000000AWAITING YOUR CALL           EN00000000044021        POP000436Y  ORI   PHIL 
TRL000010000000100000022 

라고 할 수 있습니다 위의 라인을 생성 된 출력과 비교하십시오. 내가

output == hardCoded 

또는

Assert.AreEqual(output,hardCoded); 

이 거짓입니다 비교할 때 지금 나는이

string hardCoded = " HDRPB509030978SENTRIC MUSIC        \n01.102013070914290620130709     \n GRHREV0000102.100000000000  \n REV0000000000000000AWAITING YOUR CALL           \nEN00000000044021        POP000436Y  ORI   PHIL  \n TRL000010000000100000022 " 

처럼 \ n을 사용하여 다음 라인을 교체하고 다음과 같이 하드 코딩하고 있습니다. 이 두 방법을 비교하는 방법

+0

당신이 등호가되도록 공백이 필요합니다 : 당신이 일치하도록 공백을 필요하지 않은 경우

마지막으로, 공백을 제외한 문자열을 비교하는 함수를 정의 할 수 있을까? 그렇지 않다면 내 마음에 오는 가장 쉬운 해결책은 다듬어 진 문자열에 대해 동등성 검사를하는 것입니다. 그렇지 않으면 디버거를 사용하여 디버거 환경에서 정확한 문자열을 복사 할 문자열이있을 때 –

+0

\ n을 \ n \ r \ n으로 대체하고 시도 할 수 있습니다. – Rezoan

답변

3

여러 줄 문자열 비교는 한 줄 문자열 비교와 다르지 않습니다. 비교할 문자열은 공백 및 줄 바꿈을 포함하여 문자 일 문자와 일치해야합니다. 생성 된 문자열이 \n 대신 \r\n 구분 기호를 사용하는 경우 가져올 것으로 예상되는 문자열 상수에도 동일한 구분 기호가 포함되어야합니다. 중단 점을 설정하고 디버거에서 생성 한 문자열을 검사하여 사용하는 구분 기호의 종류를 확인할 수 있습니다.

단위 테스트를 위해 문자열을 하드 코딩하지 말고 리소스에서 읽는 것이 좋습니다. 이렇게하면 텍스트 편집기에서 문자열을 편집하고 시각적으로 차이점을 검사 할 수 있습니다.

static bool EqualsExcludingWhitespace(String a, String b) { 
    return a.Where(c => !Char.IsWhiteSpace(c)) 
     .SequenceEqual(b.Where(c => !Char.IsWhiteSpace(c))); 
} 
+0

나는 하드 코드를해야한다 ...... – Moon

+0

@JunaidSaeed 그런 다음 구분 기호와 공백을 확인하거나 편집에서 제안한 비교자를 사용하여 무시해야한다. – dasblinkenlight

관련 문제