[java] Java에서 문자열에서 공백 제거

다음과 같은 문자열이 있습니다.

mysz = "name=john age=13 year=2001";

문자열에서 공백을 제거하고 싶습니다. 나는 시도 trim()했지만 이것은 전체 문자열 전후에 공백 만 제거합니다. 나는 또한 시도 replaceAll("\\W", "")했지만 그 =또한 제거된다.

어떻게 문자열을 얻을 수 있습니까?

mysz2 = "name=johnage=13year=2001"



답변

st.replaceAll("\\s+","")공백과 보이지 않는 문자를 모두 제거합니다 (예 : 탭, \n).


st.replaceAll("\\s+","")st.replaceAll("\\s","")동일한 결과를 생성한다.

두 번째 정규 표현식은 첫 번째 정규 표현식보다 20 % 빠르지 만 연속되는 공백 수가 증가하면 첫 번째 정규 표현식이 두 번째 정규 표현식보다 성능이 좋습니다.


직접 사용하지 않는 경우 값을 변수에 지정하십시오.

st = st.replaceAll("\\s+","")


답변

replaceAll("\\s","")

\w = 단어 문자

\W = 단어 문자가 아닌 것 (문구 등 포함)

\s = 공백 문자 (공백, 탭 문자 등)

\S = 공백 문자가 아닌 모든 것 (문자와 숫자, 구두점 등 포함)

(편집 : 지적했듯이 \s정규식 엔진에 도달하려면 백 슬래시를 피해야합니다 \\s.


답변

질문에 대한 가장 정답은 다음과 같습니다.

String mysz2 = mysz.replaceAll("\\s","");

방금 다른 답변 에서이 코드를 수정했습니다. 나는 질문이 정확히 요청한 것 외에도 그것을 게시하기 때문에 게시하고 있습니다. 결과가 새로운 문자열로 반환되고 원본 문자열이 일부 답변이 암시하는 것처럼 수정되지 않았 음을 하고 있습니다 .

(경험이 풍부한 Java 개발자는 “물론 실제로 문자열을 수정할 수는 없습니다”라고 말할 수 있지만이 질문의 대상 독자는이를 잘 모를 수 있습니다.)


답변

어때요 replaceAll("\\s", "")? 여기를 참조 하십시오 .


답변

문자열 조작을 처리하는 한 가지 방법은 Apache commons의 StringUtils입니다.

String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);

여기에서 찾을 수 있습니다 . commons-lang에는 더 많은 것이 포함되어 있으며 잘 지원됩니다.


답변

깨지지 않는 공백도 제거해야하는 경우 다음과 같이 코드를 업그레이드 할 수 있습니다.

st.replaceAll("[\\s|\\u00A0]+", "");


답변

유틸리티 클래스를 정규식보다 선호하는 경우 Spring Framework의 StringUtils에 trimAllWhitespace (String) 메소드가 있습니다.