我得到了一个我想用Java做的东西,它使用了一行
text[i] = text[i].replaceAll("\\cM?\r?\n", "");
我完全理解命令replaceAll用第二个字符串替换第一个字符串但是不完全理解“\ cM?\ r?\ n”代表什么?
如果有人能在引号之间解释这段文字,我将不胜感激。 (我确实尝试谷歌但没有找到满意的答案)
答案 0 :(得分:3)
\ 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匹配换行符。
答案 3 :(得分:0)
它是一个正则表达式,在你的情况下将删除所有匹配以下内容的新行/换行符:\ cM将匹配一个Control-M或回车符,\ r \ n用于匹配回车符和\ n用于换行