多个空格的java正则表达式

时间:2013-06-11 09:15:53

标签: java regex

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

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

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

1 个答案:

答案 0 :(得分: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");

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