Java에서이 문자열을 변경하는 빠르고 간단한 방법을 찾고 있습니다.
" hello there "
이런 식으로
"hello there"
여기서 문자열의 시작 부분에 하나 이상의 공백이 없어지기를 제외하고는 여러 공백을 모두 단일 공백으로 바꿉니다.
이 같은 것은 나를 부분적으로 데려다
String mytext = " hello there ";
mytext = mytext.replaceAll("( )+", " ");
그러나 그렇지 않습니다.
답변
이 시도:
String after = before.trim().replaceAll(" +", " ");
또한보십시오
String.trim()
- 선행 및 후행 공백이 생략 된 문자열의 사본을 리턴합니다.
- regular-expressions.info/ 반복
trim()
정규식 없음
하나만 사용 하여이 작업을 수행 할 수도 replaceAll
있지만 trim()
솔루션 보다 읽기 쉽지 않습니다 . 그럼에도 불구하고 여기에 정규식이 무엇을 할 수 있는지 보여주기 위해 제공됩니다.
String[] tests = {
" x ", // [x]
" 1 2 3 ", // [1 2 3]
"", // []
" ", // []
};
for (String test : tests) {
System.out.format("[%s]%n",
test.replaceAll("^ +| +$|( )+", "$1")
);
}
3 가지 대안이 있습니다 :
^_+
: 문자열의 시작 부분에있는 일련의 공백$1
빈 문자열을 캡처하는로 일치 및 바꾸기
_+$
: 문자열 끝에있는 일련의 공백$1
빈 문자열을 캡처하는로 일치 및 바꾸기
(_)+
: 위의 어느 것과도 일치하지 않는 모든 일련의 공백, 즉 중간에 있음을 의미합니다.$1
단일 공간을 캡처하는로 일치 및 교체
또한보십시오
답변
당신은 단지 필요합니다 :
replaceAll("\\s{2,}", " ").trim();
하나 이상의 공백을 일치시키고 공백을 단일 공백으로 바꾸고 시작과 끝에서 공백을 자릅니다 (먼저 누군가 지적한대로 정규 표현식을 더 빨리 만들기 위해 먼저 자르고 일치시켜 반전시킬 수 있습니다).
이것을 빨리 테스트하려면 다음을 시도하십시오.
System.out.println(new String(" hello there ").trim().replaceAll("\\s{2,}", " "));
그리고 그것은 반환됩니다 :
"hello there"
답변
답변
이것은 나를 위해 완벽하게 작동했습니다. sValue = sValue.trim().replaceAll("\\s+", " ");
답변
"[ ]{2,}"
이것은 둘 이상의 공간과 일치합니다.
String mytext = " hello there ";
//without trim -> " hello there"
//with trim -> "hello there"
mytext = mytext.trim().replaceAll("[ ]{2,}", " ");
System.out.println(mytext);
산출:
hello there
답변
문자열의 시작과 끝에 공백을 제거하려면 String#trim()
method를 사용하십시오 . 그런 다음을 사용하십시오 mytext.replaceAll("( )+", " ")
.
답변
String.trim()
먼저을 사용한 다음 결과에 regex replace 명령을 적용 할 수 있습니다 .