2012-07-28 2 views
14

자바 문자열 트림은 나를 위해 공백 문자를 제거하지 않습니다.자바 문자열 트림은 아무 효과가 없습니다.

String rank = (some method); 
System.out.println("(" + rank + ")"); 

출력은 (1 )입니다.

rank 문자열에서 후행 공백을 제거해야하지만 rank.trim()이나 rank.replace(" ","")도 제거하지 않아야합니다.

문자열 rank은 그냥 똑같이 유지됩니다.

편집 : 전체 코드 : :

Document doc = Jsoup.connect("http://www.4icu.org/ca/").timeout(1000000).get(); 
Element table = doc.select("table").get(7); 
Elements rows = table.select("tr"); 
for (Element row: rows) { 
    String rank = row.select("span").first().text().trim(); 
    System.out.println("("+rank+")"); 
} 

왜 그 공간을 제거 할 수 없습니다?

+3

당신은()'순위 = rank.trim를 사용하십니까,'하거나'rank.trim(); ':
당신은 트림이 코드를 사용할 수 있습니까? 두 번째는 작동하지 않습니다. – Baz

+0

당신이 사용한 trim() 코드를 제공하십시오 .. –

+0

@Baz question edited –

답변

36

해당 웹 사이트의 소스 코드는 특수 html 문자  을 보여줍니다. 검색 또는 Java 문자열에서 다음 바꾸기보십시오 : \u00A0.

그건 깨지지 않는 공간입니다. 참조 : I have a string with "\u00a0", and I need to replace it with "" str_replace fails

rank = rank.replaceAll("\u00A0", ""); 

이 작동해야합니다. \ 대신 이중 \\을 추가 할 수 있습니다.

+3

@TerryLi 당신이 충분한 정보를 제공한다면, 우리는 당신을 도울 수 있습니다. 기꺼이 도와 드리겠습니다. – Baz

+0

@Baz 감사합니다. 작동합니다! – dogankadriye

+0

가치가이 답변을 : http://stackoverflow.com/questions/1437933/how-to-properly-trim-whitespaces-from-a-string-in-java – Quaternion

3

문자열을 할당합니까?

String rank = " blabla "; 
rank = rank.trim(); 

두 번째 할당을 잊지 마십시오. 그렇지 않으면 자른 문자열이 아무 곳에 나 표시되지 않습니다.

당신은뿐만 아니라 API에 물건의 종류를 찾아 볼 수 있습니다 : http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()

를이 방법이 할 문자열에서 작동하는 대부분의 방법과 같은 문자열을 반환 볼 수 있듯이. 그들은 수정 된 String을 반환하고 원본 String을 그대로 유지합니다.

+0

질문 편집 –

7

트림 결과를 String 변수에 다시 지정해야합니다. 그렇지 않으면 Java의 문자열이 이 아니기 때문에이 작동하지 않습니다.

String orig = " quick brown fox "; 
String trimmed = original.trim(); 
+0

질문 편집 –

0

자르기 함수는 선행 공백과 후행 공백이 생략 된 문자열의 새 복사본을 반환합니다.

rank = rank.trim();// This will remove and save rank without leading and trailing spaces 

원하는 결과를 얻을 수 있습니다.

교체를 위해 빈 문자열을 전달하면 바꾸기 방법이 작동하지 않습니다.

+0

질문 편집 –

+1

공백에 대해 확실하지 않으면 regex를 사용하여 번호 추출을 제안합니다. "((- | \\ +)? [0-9] + (\\. [0-9] +)?) +"regex는 숫자 양식 문자열을 추출합니다. –

+0

나는 당신에게 조언을 할게. 그러나 나는 여전히 두 공간이 무엇을 나타내는 지 궁금해한다. –

0

java의 String은 변경할 수 없으므로 변경할 수 없습니다. 그것을 임시 문자열에 재 할당해야합니다. 그리고 그 문자열을 사용하여 int로 변환 할 수 있습니다.

String temp=rank.trim() 
int te= Integer.parseInt(temp) 
+0

임시 문자열을 사용할 필요가 없습니다. 당신은'rank = rank.trim();'을 사용할 수 있습니다 ... – Baz

+0

질문이 편집 됨 –

3

문자는 깨지지 않는 공백이므로 trim() 메서드로 제거 할 수 없습니다.문자를 반복하고 각각의 int 값을 출력하여 원하는 문자를 얻기 위해 빈 문자열로 대체해야하는 문자를 알아야합니다.

1

동일한 문제가있어서 java의 trim() 메소드에서 약간의 조작을 수행했습니다.

public static String trimAdvanced(String value) { 

     Objects.requireNonNull(value); 

     int strLength = value.length(); 
     int len = value.length(); 
     int st = 0; 
     char[] val = value.toCharArray(); 

     if (strLength == 0) { 
      return ""; 
     } 

     while ((st < len) && (val[st] <= ' ') || (val[st] == '\u00A0')) { 
      st++; 
      if (st == strLength) { 
       break; 
      } 
     } 
     while ((st < len) && (val[len - 1] <= ' ') || (val[len - 1] == '\u00A0')) { 
      len--; 
      if (len == 0) { 
       break; 
      } 
     } 


     return (st > len) ? "" : ((st > 0) || (len < strLength)) ? value.substring(st, len) : value; 
    } 
관련 문제