2013-06-11 3 views
-1

아래 다섯 줄 대신 한 줄 정규식을 쓸 수 있습니까?여러 공백에 대한 자바 정규식

strTestIn = strTestIn.replaceAll("^\\s+", ""); 
strTestIn = strTestIn.replaceAll("[ ]+", " "); 
strTestIn = strTestIn.replaceAll("(\\r\\n)+", "\r\n"); 
strTestIn = strTestIn.replaceAll("(\\t)+", " "); 
strTestIn = strTestIn.replaceAll("\\s+$", ""); 

이 정규 표현식의 차이점은 무엇입니까?

+1

달성하려는 내용에 대해 설명하면 도움이 될 것입니다.이 코드가 실제로 수행하려고 시도하는 내용 – mvp

+1

[패턴] (http://docs.oracle.com/javase/6/docs/api/java)을 참조하십시오. /util/regex/Pattern.html) ... – devconsole

+2

왜 downvotes? OP가 대답을 모른다는 것이 분명한 질문입니다. 그것이 바로 SO입니다. –

답변

6
strTestIn = strTestIn.replaceAll("^\\s+", ""); 

은 문자열 시작 부분의 공백을 제거합니다.

strTestIn = strTestIn.replaceAll("\\s+$", ""); 

은 문자열 끝에있는 공백을 제거합니다.

strTestIn = strTestIn.replaceAll("[ ]+", " "); 

은 하나의 공백으로 여러 공백을 응축합니다.

strTestIn =strTestIn.replaceAll("(\\r\\n)+", "\r\n"); 

은 인접 줄 바꿈을 단일 줄 바꿈으로 대체하여 빈 줄을 제거합니다.

strTestIn = strTestIn.replaceAll("(\\t)+", " "); 

은 단일 공간으로 탭을 응축합니다.

그래서 그들은 모두 다른 일을합니다. 조합은 같은 대체 문자열을 가지고 그 사람들을 위해 수 있습니다 :

strTestIn = strTestIn.replaceAll("^\\s+|\\s+$", ""); 
strTestIn = strTestIn.replaceAll(" {2,}|\t+", " "); 
strTestIn = strTestIn.replaceAll("(\r\n)+", "\r\n"); 

또한 청소와 정규 표현식에 조금 (일부 불필요한 백 슬래시를 제거하고, 2 개에 공간의 최소 수를 변경)을 향상시킬 수 있습니다.