我有一个我想在 Java 中做的事情的类,它使用了一行
text[i] = text[i].replaceAll("\\cM?\r?\n", "");
我完全理解命令 replaceAll 用第二个字符串替换第一个字符串,但不完全理解 "\cM?\r?\n" 代表什么?
如果有人能在引号之间解释这段文字,我将不胜感激。(我确实尝试过谷歌但没有找到满意的答案)
我有一个我想在 Java 中做的事情的类,它使用了一行
text[i] = text[i].replaceAll("\\cM?\r?\n", "");
我完全理解命令 replaceAll 用第二个字符串替换第一个字符串,但不完全理解 "\cM?\r?\n" 代表什么?
如果有人能在引号之间解释这段文字,我将不胜感激。(我确实尝试过谷歌但没有找到满意的答案)
\cM 匹配 Control-M 或回车符
\r 匹配回车符
\n 是一个新行
? 匹配前面的字符或子表达式零次或一次。例如,“做(做)?” 匹配“do”或“does”中的“do”。? 相当于 {0,1}
不同的操作系统有不同的方式在windows中开始一个新行,在POSIX中它的/r/n是不同的。等。
您的代码本质上是删除所有新行并将所有内容放在一行上。
它匹配所有换行符。\cM
是 Windows 行尾。\r\n
是另一种在 Windows 中进行行尾的方法。\n
是标准的 Unix 行尾。
?
表示可选。
所以 match \cM
or \r\n
or \n
which 是所有类型的行尾。应该把所有东西都放在一条线上......
正如我之前所说,在评论中......
字符转义
\cX 匹配一个控制字符。例如:\cm 匹配 control-M。
\r 匹配回车。
\n 匹配换行符。
它是一个正则表达式,在您的情况下,将删除与以下内容匹配的所有换行符/换行符:\cM 将匹配 Control-M 或回车符,\r 用于匹配回车符,\n 用于换一条新线