Java中“\\ cM?\ r?\ n”的含义

时间:2013-08-29 20:07:07

标签: java replaceall

我得到了一个我想用Java做的东西,它使用了一行

text[i] = text[i].replaceAll("\\cM?\r?\n", "");

我完全理解命令replaceAll用第二个字符串替换第一个字符串但是不完全理解“\ cM?\ r?\ n”代表什么?

如果有人能在引号之间解释这段文字,我将不胜感激。 (我确实尝试谷歌但没有找到满意的答案)

4 个答案:

答案 0 :(得分:3)

It's a regular expression.

  

\ cM匹配Control-M或回车符

     

\ r \ n匹配回车符

     

\ n是一个新行

     

?匹配前面的字符或子表达式零次或一次。   例如,“do(es)?”匹配“do”或“do”中的“do”。 ?是   相当于{0,1}

不同的操作系统有不同的方式在Windows中启动一个新行/它在POSIX中它/ r / n是不同的。等等。

您的代码实际上是删除所有新行并将所有内容组成一行。

答案 1 :(得分:1)

它匹配所有换行符。 \cM是Windows行结尾。 \r\n是在Windows中进行行结尾的另一种方式。 \n是标准的Unix行结尾。

?表示可选。

匹配\cM\r\n\n,这些是所有类型的行结尾。应该把所有东西都放在一条线上......

答案 2 :(得分:1)

正如我先前所说,评论......

角色逃脱

  

\ cX匹配控制字符。例如:\ cm匹配control-M。

     

\ r \ n匹配回车。

     

\ n匹配换行符。

http://www.javascriptkit.com/javatutors/redev2.shtml

答案 3 :(得分:0)

它是一个正则表达式,在你的情况下将删除所有匹配以下内容的新行/换行符:\ cM将匹配一个Control-M或回车符,\ r \ n用于匹配回车符和\ n用于换行