UFO ET IT

Java 문자열에서 줄 끝 문자 제거

ufoet 2020. 11. 29. 12:42
반응형

Java 문자열에서 줄 끝 문자 제거


나는 이와 같은 문자열이

"hello
java
book"

문자열에서 \ r 및 \ n을 제거하고 싶습니다 (hello \ r \ njava \ r \ nbook). "hellojavabook"과 같은 문자열을 원합니다. 어떻게 할 수 있습니까?


replaceAll이있는 정규식.

public class Main
{
    public static void main(final String[] argv) 
    {
        String str;

        str = "hello\r\njava\r\nbook";
        str = str.replaceAll("(\\r|\\n)", "");
        System.out.println(str);
    }
}

쌍일 때만 \ r \ n을 제거하려면 (위의 코드는 \ r 또는 \ n을 제거함) 대신 다음을 수행하십시오.

str = str.replaceAll("\\r\\n", "");

정규식을 피하고 싶거나 이전 JVM을 대상으로해야하는 경우 String.replace ()는 다음을 수행합니다.

str=str.replace("\r","").replace("\n","");

CRLF 쌍을 제거하려면 :

str=str.replace("\r\n","");

후자는 동일한 작업을 수행하기 위해 정규식을 빌드하는 것보다 더 효율적입니다. 그러나 문자열이 한 번만 구문 분석되기 때문에 전자가 정규식으로 더 빠를 것이라고 생각합니다.


public static void main(final String[] argv) 
{
    String str;

    str = "hello\r\n\tjava\r\nbook";
    str = str.replaceAll("(\\r|\\n|\\t)", "");
    System.out.println(str);
}

정규식에 표를 추가하는 것도 유용합니다.


주어진 문자열 str :

str = str.replaceAll("\\\\r","")
str = str.replaceAll("\\\\n","")

replaceAll 메서드를 사용하여 \ n 또는 \ r을 빈 문자열로 바꾸어 보셨습니까 ?


당신은 사용할 수 있습니다 unescapeJava에서 org.apache.commons.text.StringEscapeUtils다음과 같은

str = "hello\r\njava\r\nbook";
StringEscapeUtils.unescapeJava(str);

static byte[] discardWhitespace(byte[] data) {
    byte groomedData[] = new byte[data.length];
    int bytesCopied = 0;

    for (int i = 0; i < data.length; i++) {
        switch (data[i]) {
            case (byte) '\n' :
            case (byte) '\r' :
                break;
            default:
                groomedData[bytesCopied++] = data[i];
        }
    }

    byte packedData[] = new byte[bytesCopied];

    System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);

    return packedData;
}

commons-codec 프로젝트에서 찾은 코드입니다.


Windows, Mac 또는 UNIX에서 줄 종결자를 알고있는 경우 줄 종결자를 직접 전달할 수 있습니다 (예 : \ n). 또는 다음 코드를 사용하여 세 가지 주요 운영 체제 중 하나에서 줄 바꿈을 바꿀 수 있습니다.

str = str.replaceAll("\\r\\n|\\r|\\n", " ");

위의 코드 줄은 Mac, Windows 및 Linux에서 줄 바꿈을 공백으로 바꿉니다. 또한 줄 구분 기호를 사용할 수 있습니다. 모든 OS에서 작동합니다. 다음은 줄 구분 기호에 대한 코드 조각입니다.

String lineSeparator=System.lineSeparator();
String newString=yourString.replace(lineSeparator, "");

시도해 보았 니

string.trim(); 

이것은 문자열의 공백을 유지하면서 모든 선행 및 기울기를 트리밍하기위한 것입니다. 도움이 되었기를 바랍니다.

편집 : (나는 충분히 명시 적이 지 않았다)

따라서 string.split ()을 사용하면 string []이 생깁니다. 배열의 각 문자열에 대해 string.trim ()을 수행 한 다음 추가합니다.

String[] tokens = yourString.split(" ");
StringBuffer buff = new StringBuffer();
for (String token : tokens)
{
  buff.append(token.trim());
}

동일한 문자열에 추가하는 대신 stringBuffer / Builder를 사용하십시오.

참고URL : https://stackoverflow.com/questions/593671/remove-end-of-line-characters-from-java-string

반응형