1

我有一个我想在 Java 中做的事情的类,它使用了一行

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

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

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

4

4 回答 4

3

这是一个正则表达式。

\cM 匹配 Control-M 或回车符

\r 匹配回车符

\n 是一个新行

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

不同的操作系统有不同的方式在windows中开始一个新行,在POSIX中它的/r/n是不同的。等。

您的代码本质上是删除所有新行并将所有内容放在一行上。

于 2013-08-29T20:14:01.100 回答
1

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

?表示可选。

所以 match \cMor \r\nor \nwhich 是所有类型的行尾。应该把所有东西都放在一条线上......

于 2013-08-29T20:14:05.203 回答
1

正如我之前所说,在评论中......

字符转义

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

\r 匹配回车。

\n 匹配换行符。

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

于 2013-08-29T20:15:48.410 回答
0

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

于 2013-08-29T20:34:17.180 回答