Java에서 앞뒤로 연속적인 줄 바꿈과 탭 제거
한 글자라면 일치하지 않는 것을 깨닫습니다.
"^[\t\n]*([^\t\n]+(.|\\s)*[^\t\n]+)[\t\n]*$"
부터"^[\t\n]*([^\t\n]*(.|\\s)*[^\t\n]+)[\t\n]*$"
로 수정했다.첫 번째 플러스가 별표가되었습니다.
싫어하는 정규식.
전후 이외의 개행이나 탭은 그대로 두면 이것이 포인트.
엄청 빠져서 기사로 할 때.
public static String trimNewline(String str) {
String regex = "^[\t\n]*([^\t\n]*(.|\\s)*[^\t\n]+)[\t\n]*$";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
if (m.find()) {
return m.group(1);
} else { // 「空文字」や「タブや改行だけで構成された文字列」はマッチせずここにくる
return "";
}
}
자바 정규식을 살펴보면
"."는 모든 문자와 일치합니다.
라고만 써 있는 것뿐입니다만, 실은,
개행 이외의 임의의 캐릭터 라인
이었기 때문에, 엄청 빠졌습니다.
System.out.println(trimNewline("\t\n\t\nhoge\t\n\t\n")); // hoge
System.out.println(trimNewline("\t\n\t\nhoge")); // hoge
System.out.println(trimNewline("hoge\t\n\t\n")); // hoge
또, 도중에 개행이나 탭이 들어간,
"\t\n\n\n\t\tho\t\t\nhoge\nge\t\n\t\n"
이쪽도,무사히 전후만 제거되었습니다.
Reference
이 문제에 관하여(Java에서 앞뒤로 연속적인 줄 바꿈과 탭 제거), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kounorimich/items/f7669613312c29075e35텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)