我可以写一行正则表达式而不是下面的五行吗?
strTestIn = strTestIn.replaceAll("^\\s+", "");
strTestIn = strTestIn.replaceAll("[ ]+", " ");
strTestIn = strTestIn.replaceAll("(\\r\\n)+", "\r\n");
strTestIn = strTestIn.replaceAll("(\\t)+", " ");
strTestIn = strTestIn.replaceAll("\\s+$", "");
这些正则表达式之间有什么区别?
答案 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");
您还可以稍微清理和改进正则表达式(删除一些不必要的反斜杠,并将最小空格数更改为两个)。