2013-10-28 3 views
0

텍스트 영역이 있고 여러 개의 새로운 줄을 제거하기 위해 텍스트를 처리하려고합니다. 하지만 어떻게 든 String.replace("\r\n\r\n\r\n", "\r\n\r\n")는 작동하지 않는 것 같습니다.문자열에서 복수 줄 바꾸기 (/ r/n) 제거하기

왜?

public static String formatCommentTextAsProvidedFromUser(String commentText) { 
    commentText = commentText.trim(); 
    commentText = commentText.replace("\n\n\n", "\n\n"); 
    commentText = commentText.replace("\r\n\r\n\r\n", "\r\n\r\n"); 
    try { 
    Logger.getLogger(CommonHtmlUtils.class.getName()).info("Formated = " + String.format("%040x", new BigInteger(1, commentText.getBytes("UTF-8")))); 
    } catch (UnsupportedEncodingException ex) { 
    Logger.getLogger(CommonHtmlUtils.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return commentText; 
} 

내가 혼란 스러워요 :이 내가 사용하고 무엇을하는 방법입니다 그것으로 참고로 0d0a0d0a0d0a0d0a0d

많은 진수 코드를 볼 때

나는 심지어 대체 문자열을 참조하십시오. 대체 후 0 번으로 여러 번 표시되는 이유는 무엇입니까?

답변

1

정규 표현식을 사용할 수 있습니다. 예컨대 :

commentText = commentText.replaceAll("(\r?\n){3,}", "\r\n\r\n"); 

이이 줄 바꿈으로 3 O를 더 줄 바꿈을 교체합니다.) (

String lineSeparator = System.getProperty("line.separator"); 

그래서,

commentText = commentText.replaceAll("(\r?\n){3,}", 
             lineSeparator + lineSeparator); 
+0

감사합니다,이 작품, 당신은 아마도하려면 string.replace에보고 줄래 : 다른 방법으로

, 기본 시스템 라인 구분을 사용할 수 있습니다 내 코드가 작동하지 않는 이유를 설명하는 구현입니까? http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/String.java#String.replace%28java.lang.CharSequence%2Cjava.lang. CharSequence % 29. Java로 15 년을 보냈는데 왜 replace ("\ r \ n \ r \ n \ r \ n \ r \ n \", "\ r \ n \ r \ n")'가 작동하지 않는지 이해하지 못합니다. –

+0

입력 내용은 무엇입니까? –

+0

안녕하세요 폴. 내 의견을 알려 드릴 수는 있었지만 그 이유를 알기 위해 노력 했습니까? 그래서 나를 위해 디버깅 할 수 있니? 나도 게으른 아니 었어 왜 직접 그 대신에() 그랬는지보고 디버그를 실행합니다. 나는 find()가 matcher에서 true를 반환했지만 Matcher.java에 넣은 시계가 작동하지 않는다는 것을 보았습니다 - 컴파일 된 코드이기 때문에 가능성이 높습니다. 그래서 그것은 여전히 ​​미스터리입니다. 시험해보고 싶다면'String test = "t \ r \ n \ r \ n \ r \ n \ r \ n \ r \ n \ r \ ntt"; –