programing

문자열의 처음과 끝에서 줄바꿈을 삭제하려면 어떻게 해야 합니까?

prostudy 2022. 6. 6. 10:34
반응형

문자열의 처음과 끝에서 줄바꿈을 삭제하려면 어떻게 해야 합니까?

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

메서드를 사용하여 문자열의 처음과 끝에서 공백(스페이스, 새 줄 등)을 제거합니다.

String trimmedString = myString.trim();
String.replaceAll("[\n\r]", "");

이 Java 코드는 질문 제목에 표시된 "string-java의 시작과 끝에서 newlines 제거"와 같은 작업을 수행합니다.

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

줄 끝에서만 새 줄을 제거합니다.

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

줄의 선두에서만 새 줄을 제거합니다.

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

dr;dr

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

String::strip…

오래된 방법은 공백대한 묘한 정의를 가지고 있다.

여기서 설명한 바와 같이 Java 11은 새로운 메서드를String유니코드에 정통한 공백의 정의를 사용합니다.의 클래스 JavaDoc에서 이 정의 규칙을 참조하십시오.

코드 예시

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

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

새로운 라인을 구성하는 코드 포인트는 정확하게 언급하지 않았습니다.당신의 새로운 라인이 다음 타겟의 코드 포인트 목록에 포함될 것 같습니다.strip:

  • 유니코드 공간 문자(SPACE_SEPARTUPER, LINE_SEPARTUPER 또는 CLARGOR_SEPARTUPER)이지만 구분되지 않는 공간('\u00A0', '\u2007', '\u202F')도 아닙니다.
  • '\t', U+0009 수평표입니다.
  • '\n', U+000A 라인 피드입니다.
  • '\u000B', U+000B 수직표입니다.
  • '\f', U+000C 폼 피드입니다.
  • '\r', U+000D 캐리지 리턴입니다.
  • '\u001C', U+001C 파일 구분 기호입니다.
  • '\u001D', U+001D 그룹 구분자입니다.
  • '\u001E', U+001E 레코드 구분 기호입니다.
  • '\u001F', U+0입니다.

스트링이 잠재적으로null의 null-safe 버전 사용을 검토하십시오.

스트링의 선두와 말미에 있는 줄 바꿈(스페이스나 탭이 아님)만 삭제하는 경우는, 다음의 어프로치를 사용할 수 있습니다.

정규식을 사용하여 캐리지 리턴을 삭제합니다(\\r및 회선 피드(\\n처음부터 ( )^( ) 및 종료($)의 문자열:

 s = s.replaceAll("(^[\\r\\n]+|[\\r\\n]+$)", "")

완전한 예:

public class RemoveLineBreaks {
    public static void main(String[] args) {
        var s = "\nHello world\nHello everyone\n";
        System.out.println("before: >"+s+"<");
        s = s.replaceAll("(^[\\r\\n]+|[\\r\\n]+$)", "");
        System.out.println("after: >"+s+"<");
    }
}

출력:

before: >
Hello world
Hello everyone
<
after: >Hello world
Hello everyone<

같은 질문을 했지만 답변이 충분하지 않았기 때문에 여기에 답변을 추가합니다.그런 생각을 해보니 정규표현으로 쉽게 할 수 있다는 걸 깨달았어요.

처음부터 새 을 제거하려면:

// 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] + "-");

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

단순한 정규식이기 때문에 양쪽 끝에서 모든 문자 변형 및 조합을 잘라내는 데 동일한 방법을 사용할 수 있습니다.

이거 드셔보세요

function replaceNewLine(str) { 
  return str.replace(/[\n\r]/g, "");
}
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. regex 조합= | ,
  4. 줄 바꿈 = \r\n|[\n\x0B\x0C\r\u0085\u2028\u2029]

또 하나의 우아한 솔루션.

String myString = "\nLogbasex\n";
myString = org.apache.commons.lang3.StringUtils.strip(myString, "\n");

다른 줄 바꿈을 다룰 때 질문에 대한 답을 찾고 있는 다른 사용자:

string.replaceAll("(\n|\r|\r\n)$", ""); // Java 7
string.replaceAll("\\R$", "");          // Java 8

이렇게 하면 마지막 줄 바꿈이 완전히 삭제되고 문자열에서 다른 모든 공백이 유지되며 Unix(\n), Windows(\r\n) 및 오래된 Mac(\r) 줄 바꿈(https://stackoverflow.com/a/20056634,)을 사용할 수 있습니다. "\\R"is matcher는 Java 8의 패턴클래스에서 도입되었습니다.https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html

다음 테스트를 통과했습니다.

// Windows:
value = "\r\n test \r\n value \r\n";
assertEquals("\r\n test \r\n value ", value.replaceAll("\\R$", ""));

// Unix:
value = "\n test \n value \n";
assertEquals("\n test \n value ", value.replaceAll("\\R$", ""));

// Old Mac:
value = "\r test \r value \r";
assertEquals("\r test \r value ", value.replaceAll("\\R$", ""));
String text = readFileAsString("textfile.txt");
text = text.replace("\n", "").replace("\r", "");

언급URL : https://stackoverflow.com/questions/7454330/how-to-remove-newlines-from-beginning-and-end-of-a-string

반응형