2015-02-03 4 views
0

두 문자열을 비교하는 동안 문제가 발생했습니다. 항상 false가됩니다. 우주의 유니 코드 문제가 있다고 생각합니다.문자열 유니 코드 문제

String actual = "cars in"; 
String expected = "cars in"; 
for(int i=0;i<expected.length();i++){ 
     System.out.print(expected.codePointAt(i)+" "); 
     System.out.print(actual.codePointAt(i)+" "); 
     System.out.println(); 
    } 
if(actual.equals(expected)){ 
     System.out.println(true); 
    }else 
     System.out.println(false); 

다음 결과를 제공하는 codePoint도 인쇄 해 보았습니다.

99 99 
97 97 
114 114 
115 115 
32 160 
105 105 
110 110 

때문에 공간 다릅니다의 값은 첫 번째 문자열의 값은 32이고, 두 번째 문자열의 값은 내가 두 가지를 비교 거짓 매번주고있다이 때문에 160로오고있다.

이 문제를 어떻게 해결합니까? 당신이 공간에 기초하여 문자열을 spilitting 시도 할 수

+0

'160'(32) 그냥 * 공간 * HTTP 경우 * A * 비 분리 공간입니다. org/wiki/Non-breaking_space –

+0

그래서 어떻게하면 실제 결과를 얻을 수있는 문자열을 비교할 수 있습니까? –

+1

'String replace()'를 사용하여 줄 바꿈하지 않는 공백을 prdinary 공백으로 변환 할 수 있습니다. –

답변

-1

은 - : //en.wikipedia :

String actual = "cars in"; 
String expected = "cars in"; 
String[] str1 = actual.split(" "); 
String[] str2 = expected.split(" "); 
for (int i = 0; i < str1.length; i++) { 
    if (str1[i].equals(str2[i])) { 
     System.out.println(true); 
    } 
} 
+1

여기에 코드를 붙여 넣기 때문에이 코드가 변경되었을 수 있습니다. 내 컴퓨터에서 출력 한 것과 똑같습니다. –

+0

이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. 게시물을 언제든지 [편집]하여 실제 답변으로 변경할 수 있습니다. – Pshemo