我需要一个只包含单词的明文,不包括所有数字,额外空格,短划线,逗号,圆点,括号等。它用于单词生成算法(取自gamasutra)。我想正则表达式可以在这里提供帮助。如何在String.split的帮助下完成这项工作?
UPD:
输入:我有1337这样一个字符串,里面有不同的东西:逗号,很多空格,数字 - 2 3 4,破折号。我怎样才能删除所有内容?
输出:我有这样一个字符串,里面有不同的东西逗号很多空格数字破折号如何删除所有东西
答案 0 :(得分:3)
您可以分两步完成:
String s = "asd asd asd.asd, asd";
String clean = s.replaceAll("[\\d[^\\w\\s]]+", " ").replaceAll("(\\s{2,})", " ");
System.out.println(clean);
第一步删除所有不是字母或空格的字符,并用空格替换它们。第二步只删除多个空格。
输出:
asd asd asd asd
如果您只需要一个包含单词的数组,那么这就足够了:
String[] words = s.trim().split("[\\W\\d]+");
答案 1 :(得分:2)
如果您关心Unicode(您应该),请使用Unicode properties。
String[] result = s.split("\\P{L}+");
\p{L}
是任何语言的字母的Unicode属性。
\P{L}
是\p{L}
的否定,意味着它将匹配所有非字母的内容。 (我明白这就是你想要的。)
答案 2 :(得分:1)
我会这样做
str = str.replaceAll("\\s+", " ");
str = str.replaceAll("\\p{Punct}|\\d", "");
String[] words = str.split(" ");