您建议使用什么方法来规范化Java中的文本,例如
String raw = " This is\n a test\n\r ";
String txt = normalize(raw);
assert txt == "This is a test";
我正在考虑使用StringUtils
.replace()
和.strip()
方法,但也许有一些更简单的方法。
答案 0 :(得分:11)
如果只是空格
,请尝试以下操作String txt = raw.replaceAll("\\s+", " ").trim();
答案 1 :(得分:2)
我看到你想要摆脱的字符串中有一个换行符。在这种情况下,我建议使用像这样的正则表达式...
Pattern.compile("\\s+").matcher(text).replaceAll(" ").trim();
您可以随时存储已编译的正则表达式以获得更好的性能。
答案 2 :(得分:1)
稍微取决于您想要剥离的内容。如果它的某些特定字符然后replaceAll()将由@Yaneeve发布。 如果需求更加通用,那么您可能需要查看normalize the string using the Normalizer。
答案 3 :(得分:0)
删除您要查找的第一个和最后一个空格String#trim()
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#trim()
答案 4 :(得分:0)
如果规范化意味着替换空格,制表符,换行符和换行符的序列,那么我会考虑使用一个简单的正则表达式和String.split()来创建单独的单词,然后将它们附加到一个StringBuilder中,并且间距为'介于两者之间。如果性能真的很重要,另一种方法是简单地遍历String的字符,查看每个字符并决定是将它附加到StringBuilder还是丢弃它。
答案 5 :(得分:0)
private static String normalize(String raw) {
StringBuilder sb = new StringBuilder();
Scanner scanner = new Scanner(raw);
while (scanner.hasNext()) {
sb.append(scanner.next());
sb.append(' ');
}
sb.deleteCharAt(sb.length() - 1);
return sb.toString();
}
答案 6 :(得分:0)
Apache commons最终添加了这个功能:org.apache.commons.lang3.StringUtils.normalizeSpace(String str)
// docs