다음과 같은 문자열이 있습니다.
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 개발자는 “물론 실제로 문자열을 수정할 수는 없습니다”라고 말할 수 있지만이 질문의 대상 독자는이를 잘 모를 수 있습니다.)
답변
답변
문자열 조작을 처리하는 한 가지 방법은 Apache commons의 StringUtils입니다.
String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);
답변
깨지지 않는 공백도 제거해야하는 경우 다음과 같이 코드를 업그레이드 할 수 있습니다.
st.replaceAll("[\\s|\\u00A0]+", "");