Java에서 파일에서 줄 바꿈을 제거하려면 어떻게 해야 합니까?
Windows 및 Linux에서 동작하는 (캐리지 리턴/라인 피드/신규 회선 등의 OS 고유의 문제가 없는) 방법으로 Java 문자열의 모든 줄 바꿈을 교환하려면 어떻게 해야 합니까?
시도했습니다(readFileAsString은 텍스트 파일을 문자열로 읽는 함수입니다).
String text = readFileAsString("textfile.txt");
text.replace("\n", "");
효과가 없는 것 같아요.
이것이 어떻게 행해지는가?
설정해야 요.text
의 text.replace()
:
String text = readFileAsString("textfile.txt");
text = text.replace("\n", "").replace("\r", "");
은 문자열이하기 때문에 합니다. -- calling ( calling ) 。replace
스트링 스트링 ], [String], [String], [String], [String], [String], [String], [String], [String]입니다. 되지 text
스트링
하려면 , 「Newline String for any environment」를 호출해 은, 「Newline String for any any environment」를 참조해 주세요.System.getProperty("line.separator")
.
다른 답변에서 설명한 바와 같이 주로 다음 이유로 코드가 작동하지 않습니다.String.replace(...)
는 타겟을 .String
(미국의)Java ★★★★★★★★★★★★★★★★★★★★★★」 what?replace
는, 새로운 「」를 해, 입니다.String
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 그 때 그 .String
여기 몇 가지 가능한 해결책이 있습니다.어떤 것이 가장 옳은지는 당신이 정확히 무엇을 하려고 하는가에 달려있다.
// #1
text = text.replace("\n", "");
줄바꿈 문자를 모두 삭제합니다.이것은, Windows 또는 Mac 의 회선 종단에는 대응하지 않습니다.
// #2
text = text.replace(System.getProperty("line.separator"), "");
현재 플랫폼의 모든 회선 터미네이터를 삭제합니다.이것은, Windows 로 UNIX 파일을 처리하려고 하는 경우(예를 들면, 그 반대)에는 대응하지 않습니다.
// #3
text = text.replaceAll("\\r|\\n", "");
모든 Windows, UNIX 또는 Mac 회선 터미네이터를 삭제합니다.단, 입력 파일이 텍스트일 경우 단어 연결(예:
Goodbye cruel
world.
된다
Goodbye cruelworld.
따라서 실제로 다음과 같은 작업을 수행할 수 있습니다.
// #4
text = text.replaceAll("\\r\\n|\\r|\\n", " ");
각 회선 터미네이터를 공백으로1 바꿉니다.Java 8 에서는, 다음의 조작도 가능합니다.
// #5
text = text.replaceAll("\\R", " ");
복수의 회선 터미네이터를 1개의 스페이스로 치환하는 경우는, 다음의 순서에 따릅니다.
// #6
text = text.replaceAll("\\R+", " ");
- 4.- 3번 - 4번 사이에는 차이가 . ' ' '\r\n
는 단일(Windows) 회선 터미네이터를 나타내므로 공백 2개로 치환하지 않도록 주의해야 합니다.
이 함수는 줄 바꿈을 포함한 모든 공백을 단일 공간으로 정규화합니다.당초의 질문과는 달리, 많은 경우에 필요한 것을 정확하게 실행할 가능성이 있습니다.
import org.apache.commons.lang3.StringUtils;
final String cleansedString = StringUtils.normalizeSpace(rawString);
현재 OS에서 유효한 회선 터미네이터만을 삭제하는 경우는, 다음과 같이 실시할 수 있습니다.
text = text.replaceAll(System.getProperty("line.separator"), "");
행 구분 기호를 삭제하는 경우는, 다음과 같이 실시할 수 있습니다.
text = text.replaceAll("\\r|\\n", "");
또는 조금 더 장황하지만 덜 정규적이다.
text = text.replaceAll("\\r", "").replaceAll("\\n", "");
이게 효율적일 것 같아요.
String s;
s = "try this\n try me.";
s.replaceAll("[\\r\\n]+", "")
str = str.replaceAll("\\r\\n|\\r|\\n", " ");
한 줄 한 줄에 실패하여 많은 검색 끝에 완벽하게 작동했습니다.
windows/linux/mac에서는 줄 바꿈이 동일하지 않습니다.System.getProperties를 line.separator 속성과 함께 사용해야 합니다.
String text = readFileAsString("textfile.txt").replaceAll("\n", "");
oracle 웹사이트에서 trim()의 정의는 "선행 및 후행 공백이 생략된 문자열 복사본을 반환합니다."라고 되어 있지만,
설명서에서 새 행 문자(선행 및 후행)도 삭제됨을 생략했습니다.
로 말하면 ★★★String text = readFileAsString("textfile.txt").trim();
6에서 ) (Java 6에서 )
String text = readFileAsString("textfile.txt").replace("\n","");
.replace는 새 문자열을 반환합니다. Java의 문자열은 불변입니다.
때 '읽다'로 읽으면 것 같아요.BufferedReader
이 클래스는 입력을 개별 라인으로 분할할 수 있으며, 원하는 대로 조립할 수 있습니다. ★★★BufferedReader
는 현재의 operations에 관계없이 및 의 행 끝 규칙을 합니다.
이 때문에,
BufferedReader br = new BufferedReader(
new InputStreamReader("textfile.txt"));
StringBuilder sb = new StringBuilder();
for (;;) {
String line = br.readLine();
if (line == null)
break;
sb.append(line);
sb.append(' '); // SEE BELOW
}
String text = sb.toString();
:readLine()
는 반환되는 문자열에 행 끝자를 포함하지 않습니다.위의 코드는 행의 마지막 단어와 다음 행의 첫 단어가 서로 붙지 않도록 공백을 추가합니다.
(Apache) String Utils가 아직 여기서 다루어지지 않은 것이 이상합니다.
그 할 수 ..replace
StringUtils.replace(myString, "\n", "");
이 행은 모든 새 행을 빈 문자열로 바꿉니다.
말하면 할 수 ..replaceChars
치환
StringUtils.replaceChars(myString, '\n', '');
부터, 「」, 「」11」이 되고 있습니다.String
있다lines()
의 행 을 반환합니다.모든 행을 가져와 단일 문자열로 병합할 수 있습니다.
Kotlin과 함께라면 그것은 다음과 같이 간단할 것이다.
str.lines().joinToString("")
참고로 동시 다중 줄 바꿈을 단일 줄 바꿈으로 대체할 수 있는 경우 다음과 같이 사용할 수 있습니다.
myString.trim().replaceAll("[\n]{2,}", "\n")
또는 단일 공간으로 대체합니다.
myString.trim().replaceAll("[\n]{2,}", " ")
Apache 공통 IOUtils를 사용하여 행을 반복하고 각 행을 StringBuilder에 추가할 수 있습니다.InputStream을 닫는 것도 잊지 마세요.
StringBuilder sb = new StringBuilder();
FileInputStream fin=new FileInputStream("textfile.txt");
LineIterator lt=IOUtils.lineIterator(fin, "utf-8");
while(lt.hasNext())
{
sb.append(lt.nextLine());
}
String text = sb.toString();
IOUtils.closeQuitely(fin);
일반적인 방법을 사용하여 임의의 문자를 임의의 문자로 바꿀 수 있습니다.
public static void removeWithAnyChar(String str, char replceChar,
char replaceWith) {
char chrs[] = str.toCharArray();
int i = 0;
while (i < chrs.length) {
if (chrs[i] == replceChar) {
chrs[i] = replaceWith;
}
i++;
}
}
org.disc.disc.disc.glString Utils #chop Newline
다음을 수행합니다.
textValue= textValue.replaceAll("\n", "");
textValue= textValue.replaceAll("\t", "");
textValue= textValue.replaceAll("\\n", "");
textValue= textValue.replaceAll("\\t", "");
textValue= textValue.replaceAll("\r", "");
textValue= textValue.replaceAll("\\r", "");
textValue= textValue.replaceAll("\r\n", "");
textValue= textValue.replaceAll("\\r\\n", "");
언급URL : https://stackoverflow.com/questions/2163045/how-to-remove-line-breaks-from-a-file-in-java
'programing' 카테고리의 다른 글
Vuetify - 폼 규칙에서 데이터에 액세스하는 방법 (0) | 2022.07.10 |
---|---|
Java에서 "final" 키워드는 어떻게 작동합니까?(오브젝트를 변경할 수 있습니다. (0) | 2022.07.10 |
Java에서 문자열에 숫자만 포함되어 있는지 확인하는 방법 (0) | 2022.07.10 |
Vue.js Axios 삭제 방법 어레이에서 잘못된 개체 삭제 (0) | 2022.07.10 |
Vue.js - "속성 또는 메서드가 정의되어 있지 않습니다"에 대한 v-.js (0) | 2022.07.10 |