-1

我可以写一行正则表达式而不是下面的五行吗?

strTestIn = strTestIn.replaceAll("^\\s+", "");
strTestIn = strTestIn.replaceAll("[ ]+", " ");
strTestIn = strTestIn.replaceAll("(\\r\\n)+", "\r\n");
strTestIn = strTestIn.replaceAll("(\\t)+", " ");
strTestIn = strTestIn.replaceAll("\\s+$", "");

这些正则表达式有什么区别?

4

1 回答 1

6
strTestIn = strTestIn.replaceAll("^\\s+", "");

删除字符串开头的空格。

strTestIn = strTestIn.replaceAll("\\s+$", "");

删除字符串末尾的空格。

strTestIn = strTestIn.replaceAll("[ ]+", " ");

将多个空间压缩成一个空间。

strTestIn =strTestIn.replaceAll("(\\r\\n)+", "\r\n");

通过用单个换行符替换相邻的换行符来删除空行。

strTestIn = strTestIn.replaceAll("(\\t)+", " ");

将制表符压缩成一个空格。

所以他们都做不同的事情。对于那些具有相同替换字符串的组合是可能的:

strTestIn = strTestIn.replaceAll("^\\s+|\\s+$", "");
strTestIn = strTestIn.replaceAll(" {2,}|\t+", " ");
strTestIn = strTestIn.replaceAll("(\r\n)+", "\r\n");

您还可以稍微清理和改进正则表达式(删除一些不必要的反斜杠,并将最小空格数更改为两个)。

于 2013-06-11T09:20:26.350 回答