Java replaceAll with newline symbol

时间:2010-12-16 01:37:31

标签: java regex newline

新线符号\ n在我尝试检测并替换它时会给我带来一些麻烦: 这很好用:

String x = "Bob was a bob \\n";
String y = x.replaceAll("was", "bob");
System.out.println(y);

但是这段代码没有给出理想的结果

String x = "Bob was a bob \\n";
String y = x.replaceAll("\n", "bob");
System.out.println(y);

6 个答案:

答案 0 :(得分:8)

"Bob was a bob \\n"按字面意思Bob was a bob \n

输入字符串中没有要替换的换行符。您是否尝试替换换行符或转义序列\\n

答案 1 :(得分:3)

这可以按预期工作。

String str = "A B \n C";
String newStr = str.replaceAll("\\n","Y");
System.out.println(newStr);

打印: -

A B Y C

答案 2 :(得分:1)

String x = "Bob was a bob \\n";
String y = x.replaceAll("was", "bob");
System.out.println(y);

这里有一个问题:“\ n”不是换行符号。它应该是:

String x = "Bob was a bob \n";// \n is newline symbol, on window newline is \r\n

答案 3 :(得分:0)

你试过这个吗?:

x.replaceAll("\\n", "bob");

在替换函数中使用它之前,您应该转义新行char。

答案 4 :(得分:0)

您的输入字符串不包含新行。相反,它包含" \ n"。请参阅下面的更正输入字符串。

String x = "Bob was a bob \n";
String y = x.replaceAll("\n", "bob");
System.out.println(y);

答案 5 :(得分:-3)

更新:

我已修改它以使用\ n的多个事件。请注意,这可能效率不高。

public static String replaceBob(String str,int index){
    char arr[] = str.toCharArray();
    for(int i=index; i<arr.length; i++){
        if( arr[i]=='\\' && i<arr.length && arr[i+1]=='n' ){
            String temp = str.substring(0, i)+"bob";
            String temp2 = str.substring(i+2,str.length());
            str = temp + temp2;
            str = replaceBob(str,i+2);
            break;
        }
    }
    return str;
}

我试过这个并且有效

String x = "Bob was a bob \\n 123 \\n aaa \\n";
System.out.println("result:"+replaceBob(x, 0));

第一次调用函数时,请使用索引0。