답변:
String.trim()
메서드를 사용 하여 문자열의 시작과 끝에서 공백 (공백, 새 줄 등)을 제거합니다.
String trimmedString = myString.trim();
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
다음 대상 코드 포인트 목록에 포함될 가능성이 높습니다 .
이 자바 코드는 "문자열 자바의 시작과 끝에서 줄 바꿈 제거"라는 질문의 제목에있는 것과 정확히 일치합니다.
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])$", "") + "]");
같은 질문이 있었지만 제공된 답변이 충분하지 않았기 때문에 이것에 대한 답변도 추가하겠습니다. 생각해 보면 정규 표현식으로 아주 쉽게 할 수 있다는 것을 깨달았습니다.
처음부터 줄 바꿈 을 제거하려면 :
// 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] + "-");
나는 이것이 문자열을 트리밍하는 가장 성능 효율적인 방법이 아니라고 확신합니다. 그러나 이러한 작업을 인라인하는 가장 깨끗하고 간단한 방법 인 것 같습니다.
간단한 정규식이므로 양쪽 끝에서 문자의 변형 및 조합을 잘라 내기 위해 동일한 방법을 수행 할 수 있습니다.
split()
는 한계입니다. 무제한으로 일치 시키려면 끄십시오.
문자열 의 시작과 끝 (중간 아님 )에서 줄 바꿈 (공백, 탭 아님) 만 제거 하려면 다음 방법을 사용할 수 있습니다.
정규식을 사용하여 문자열 의 시작 ( )과 끝 ( ) 에서 캐리지 리턴 ( \\r
) 및 줄 바꿈 ( \\n
) 을 제거 합니다.^
$
s = s.replaceAll("(^[\\r\\n]+|[\\r\\n]+$)", "")
완전한 예 :
public class RemoveLineBreaks {
public static void main(String[] args) {
var s = "\nHello\nWorld\n";
System.out.println("before: >"+s+"<");
s = s.replaceAll("(^[\\r\\n]+|[\\r\\n]+$)", "");
System.out.println("after: >"+s+"<");
}
}
다음을 출력합니다.
before: >
Hello
World
<
after: >Hello
World<
String text = readFileAsString("textfile.txt");
text = text.replace("\n", "").replace("\r", "");