[java] 문자열의 시작과 끝에서 줄 바꿈을 제거하는 방법은 무엇입니까?

빈 줄이 뒤 따르는 텍스트가 포함 된 문자열이 있습니다. 텍스트가있는 부분을 유지하고 끝에서 공백 줄 바꿈을 제거하는 가장 좋은 방법은 무엇입니까?



답변

String.trim()메서드를 사용 하여 문자열의 시작과 끝에서 공백 (공백, 새 줄 등)을 제거합니다.

String trimmedString = myString.trim();


답변

String.replaceAll("[\n\r]", "");


답변

tl; dr

String cleanString = dirtyString.strip() ; // Call new `String::string` method.

String::strip…

이전 String::trim방법에는 공백에 대한 이상한 정의 가 있습니다.

여기 에 설명 된대로 Java 11 strip…String클래스에 새로운 메소드를 추가합니다 . 이들은 유니 코드에 정통한 공백 정의를 사용합니다. .NET 용 JavaDoc 클래스에서이 정의의 규칙을 참조하십시오 Character::isWhitespace.

예제 코드.

String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.strip();
System.out.println("after->>"+input+"<<-");

또는 선행 또는 후행 공백 제거 할 수 있습니다 .

개행을 구성 하는 코드 포인트를 정확히 언급하지 않습니다 . 귀하의 개행 문자가 strip다음 대상 코드 포인트 목록에 포함될 가능성이 높습니다 .

  • 유니 코드 공백 문자 (SPACE_SEPARATOR, LINE_SEPARATOR 또는 PARAGRAPH_SEPARATOR)이지만 분리되지 않는 공백 ( ‘\ u00A0’, ‘\ u2007’, ‘\ u202F’)도 아닙니다.
  • ‘\ t’, U + 0009 HORIZONTAL TABULATION입니다.
  • ‘\ n’, U + 000A LINE FEED입니다.
  • ‘\ u000B’, U + 000B VERTICAL TABULATION입니다.
  • ‘\ f’, U + 000C FORM FEED입니다.
  • ‘\ r’, U + 000D CARRIAGE RETURN입니다.
  • ‘\ u001C’, U + 001C FILE SEPARATOR입니다.
  • ‘\ u001D’, U + 001D GROUP SEPARATOR입니다.
  • ‘\ u001E’, U + 001E RECORD SEPARATOR입니다.
  • ‘\ u001F’, U + 0

답변

이 자바 코드는 “문자열 자바의 시작과 끝에서 줄 바꿈 제거”라는 질문의 제목에있는 것과 정확히 일치합니다.

String.replaceAll("^[\n\r]", "").replaceAll("[\n\r]$", "")

줄 끝에서만 줄 바꿈을 제거하십시오.

String.replaceAll("[\n\r]$", "")

줄의 시작 부분에서만 줄 바꿈을 제거하십시오.

String.replaceAll("^[\n\r]", "")


답변

문자열이 잠재적 인 경우 -의 null-safe 버전 null사용을 고려 StringUtils.trim()하십시오 String.trim().


답변

String trimStartEnd = "\n TestString1 linebreak1\nlinebreak2\nlinebreak3\n TestString2 \n";
System.out.println("Original String : [" + trimStartEnd + "]");
System.out.println("-----------------------------");
System.out.println("Result String : [" + trimStartEnd.replaceAll("^(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])|(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])$", "") + "]");
  1. 문자열 시작 = ^,
  2. 문자열 끝 = $,
  3. 정규식 조합 = | ,
  4. 줄 바꿈 = \ r \ n | [\ n \ x0B \ x0C \ r \ u0085 \ u2028 \ u2029]

답변

같은 질문이 있었지만 제공된 답변이 충분하지 않았기 때문에 이것에 대한 답변도 추가하겠습니다. 생각해 보면 정규 표현식으로 아주 쉽게 할 수 있다는 것을 깨달았습니다.

처음부터 줄 바꿈 을 제거하려면 :

// Trim left
String[] a = "\n\nfrom the beginning\n\n".split("^\\n+", 2);

System.out.println("-" + (a.length > 1 ? a[1] : a[0]) + "-");

그리고 문자열의 끝 :

// Trim right
String z = "\n\nfrom the end\n\n";

System.out.println("-" + z.split("\\n+$", 2)[0] + "-");

나는 이것이 문자열을 트리밍하는 가장 성능 효율적인 방법이 아니라고 확신합니다. 그러나 이러한 작업을 인라인하는 가장 깨끗하고 간단한 방법 인 것 같습니다.

간단한 정규식이므로 양쪽 끝에서 문자의 변형 및 조합을 잘라 내기 위해 동일한 방법을 수행 할 수 있습니다.