Java 문자열에서 선행 및 후행 공백 제거


278

Java 문자열에서 선행 또는 후행 공백을 제거하는 편리한 방법이 있습니까?

다음과 같은 것 :

String myString = "  keep this  ";
String stripppedString = myString.strip();
System.out.println("no spaces:" + strippedString);

결과:

no spaces:keep this

myString.replace(" ","") keep과 this 사이의 공간을 대체합니다.


7
안타깝지만 여기에 대한 답변이 사람들에게 유용했음을 의미합니다. 나는 그런 이유로 만 찬성했다.
Alex D

11
이것이 중복 될 수 있지만, 이것은 훨씬 더 나은 질문입니다. 다른 것이 있다면, 다른 하나는 이것과 중복되어야합니다.
thecoshman

1
이 Q & A에 훨씬 더 많은 뷰와 즐겨 찾기가 있고 다른 Q & A는 실제로 디버깅 질문이므로 복제본을 전환했습니다.
Radiodef

1
과 답변 제작 JDK / 11 API에서 솔루션을 - String.strip이에.
Naman

답변:


601

trim () 메소드를 시도 할 수 있습니다.

String newString = oldString.trim();

javadocs 살펴보기


1
Java 11의 String.strip ()을 이전 버전과 호환하는 것으로 작동합니다. 미묘한 차이점을 탐구 할 시간이 없었습니다.
요시야 요더

80

String#trim()방법을 사용 하거나 String allRemoved = myString.replaceAll("^\\s+|\\s+$", "")양쪽 끝을 다듬 으십시오.

왼쪽 트림의 경우 :

String leftRemoved = myString.replaceAll("^\\s+", "");

오른쪽 트림의 경우 :

String rightRemoved = myString.replaceAll("\\s+$", "");

3
이렇게하면 현에 몇 개의 선행 / 트레일 공간이 있는지 알 수 있다는 이점이 있습니다.
Błażej Czapp


18

trim ()이 선택되지만 replace더 융통성있는 메소드 를 사용 하려면 다음을 시도하십시오.

String stripppedString = myString.replaceAll("(^ )|( $)", "");

무엇으로 대체됩니까? 공백과 줄 바꿈?
누군가 어딘가에

후행 공백을 제거하지만 선행 공백은 제거하지 않는 솔루션을 찾고있었습니다. 사용했습니다 : str.replaceAll ( "\\ s * $", "") 감사합니다!
리사 p.

4

Java-11 이상에서는 String.stripAPI를 사용하여 값이이 문자열 인 문자열을 리턴 할 수 있습니다. 모든 선행 및 후행 공백은 제거됩니다. 동일한 읽기에 대한 javadoc은 다음과 같습니다.

/**
 * Returns a string whose value is this string, with all leading
 * and trailing {@link Character#isWhitespace(int) white space}
 * removed.
 * <p>
 * If this {@code String} object represents an empty string,
 * or if all code points in this string are
 * {@link Character#isWhitespace(int) white space}, then an empty string
 * is returned.
 * <p>
 * Otherwise, returns a substring of this string beginning with the first
 * code point that is not a {@link Character#isWhitespace(int) white space}
 * up to and including the last code point that is not a
 * {@link Character#isWhitespace(int) white space}.
 * <p>
 * This method may be used to strip
 * {@link Character#isWhitespace(int) white space} from
 * the beginning and end of a string.
 *
 * @return  a string whose value is this string, with all leading
 *          and trailing white space removed
 *
 * @see Character#isWhitespace(int)
 *
 * @since 11
 */
public String strip()

이에 대한 샘플 사례는 다음과 같습니다 .--

System.out.println("  leading".strip()); // prints "leading"
System.out.println("trailing  ".strip()); // prints "trailing"
System.out.println("  keep this  ".strip()); // prints "keep this"

추신 : -의 의견에 따라 여기에 대한 답을 마이그레이션 stackoverflow.com/questions/3796121/...
나만


0

특정 문자를 자르려면 다음을 사용할 수 있습니다.

String s = s.replaceAll("^(,|\\s)*|(,|\\s)*$", "")

여기에 선행 및 후행 공백쉼표를 제거 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.