我获取一些html并进行一些字符串操作,并使用类似
的字符串string sample = "\n \n 2 \n \n \ndl. \n \n \n flour\n\n \n 4 \n \n cups of \n\nsugar\n"
我想查找所有成分行并删除空格和换行符
2 dl。面粉和 4杯糖
到目前为止,我的方法是以下内容。
Pattern p = Pattern.compile("[\\d]+[\\s\\w\\.]+");
Matcher m = p.matcher(Result);
while(m.find()) {
// This is where i need help to remove those pesky whitespaces
}
答案 0 :(得分:4)
sample = sample.replaceAll("[\\n ]+", " ").trim();
输出:
2 dl. flour 4 cups of sugar
开头没有空格,最后没有空格。
它首先用一个空格替换所有空格和换行符,然后从乞讨/结尾修剪额外空格。
答案 1 :(得分:3)
以下代码应该适合您:
String sample = "\n \n 2 \n \n \ndl. \n \n \n flour\n\n \n 4 \n \n cups of \n\nsugar\n";
Pattern p = Pattern.compile("(\\s+)");
Matcher m = p.matcher(sample);
sb = new StringBuffer();
while(m.find())
m.appendReplacement(sb, " ");
m.appendTail(sb);
System.out.println("Final: [" + sb.toString().trim() + ']');
Final: [2 dl. flour 4 cups of sugar]
答案 2 :(得分:1)
我认为这样的事情对你有用:
String test = "\n \n 2 \n \n \ndl. \n \n \n flour\n\n \n 4 \n \n cups of \n\nsugar\n";
/* convert all sequences of whitespace into a single space, and trim the ends */
test = test.replaceAll("\\s+", " ");
答案 3 :(得分:1)
我认为\n
不是实际的换行符,但它也适用于linefeeds
。
这应该可以正常工作:
test=test.replaceAll ("(?:\\s|\\\n)+"," ");
如果没有textual \n
,可以更简单:
test=test.replaceAll ("\\s+"," ");
您需要修剪前导/尾随空格。
我使用RegexBuddy工具检查任何单个正则表达式,在这么多语言中非常方便。
答案 4 :(得分:0)
您应该可以使用标准String.replaceAll(String, String)。第一个参数将采用您的模式,第二个参数将采用空字符串。
答案 5 :(得分:0)
s/^\s+//s
s/\s+$//s
s/(\s+)/ /s
运行这三个替换(用空格替换前导空格,用空格替换尾部空格,用空格替换多个空格。