programing

Java에서 파일에서 줄 바꿈을 제거하려면 어떻게 해야 합니까?

javaba 2022. 7. 10. 11:21
반응형

Java에서 파일에서 줄 바꿈을 제거하려면 어떻게 해야 합니까?

Windows 및 Linux에서 동작하는 (캐리지 리턴/라인 피드/신규 회선 등의 OS 고유의 문제가 없는) 방법으로 Java 문자열의 모든 줄 바꿈을 교환하려면 어떻게 해야 합니까?

시도했습니다(readFileAsString은 텍스트 파일을 문자열로 읽는 함수입니다).

String text = readFileAsString("textfile.txt");
text.replace("\n", "");

효과가 없는 것 같아요.

이것이 어떻게 행해지는가?

설정해야 요.texttext.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

반응형