【发布时间】:2013-03-07 20:23:06
【问题描述】:
我有这个输入字符串(包含制表符、空格、换行符):
That is a test.
seems to work pretty good? working.
Another test again.
[编辑]:我应该提供字符串以便更好地测试,因为 stackoverflow 会删除所有特殊字符(制表符,...)
String testContent = "\n\t\n\t\t\t\n\t\t\tDas ist ein Test.\t\t\t \n\tsoweit scheint das \t\tganze zu? funktionieren.\n\n\n\n\t\t\n\t\t\n\t\t\t \n\t\t\t \n \t\t\t\n \tNoch ein Test.\n \t\n \t\n \t";
我想达到这个状态:
That is a test.
seems to work pretty good? working.
Another test again.
String expectedOutput = "Das ist ein Test.\nsoweit scheint das ganze zu? funktionieren.\nNoch ein Test.\n";
有什么想法吗?这可以使用正则表达式来实现吗?
replaceAll("\\s+", " ") 不是我想要的。如果这个正则表达式能准确地保留现有的 1 个换行符,那将是完美的。
我已经尝试过了,但这对我来说似乎不是最理想的......:
BufferedReader bufReader = new BufferedReader(new StringReader(testContent));
String line = null;
StringBuilder newString = new StringBuilder();
while ((line = bufReader.readLine()) != null) {
String temp = line.replaceAll("\\s+", " ");
if (!temp.trim().equals("")) {
newString.append(temp.trim());
newString.append("\n");
}
}
【问题讨论】:
-
我认为您必须为此制定一些逻辑。您需要在 1 个空格后搜索非空白字符。并在换行后搜索非空格字符..
-
你想要的逻辑是什么?将连续的空格修剪为 1 个空格?
-
@BlackMaggie 是的,我想总结一下..
-
@zvzdhk 否,因为这不会删除标签,也不会将所有换行符折叠为单个换行符
标签: java string whitespace removing-whitespace