我有一个字符串,例如:"h e l l o, world! ! am gl@d to see you!".
我希望得到这样的结果(删除标点符号,其他符号和空格):"hello, world! am gld to see you!"
我可以用什么方式实现这个?
我尝试使用此代码将字符串拆分为单词,但它不会在正确的位置处理单词和标点符号中的空格。
String[] words = text.replaceAll("[^a-zA-Z ]", "").toLowerCase().split("\\s+");
答案 0 :(得分:1)
以下是进行更改的代码示例。
String s = "h e l l o, world! ! am gl@d to see you!";
System.out.println(s);
s = s.replaceAll("(?<=\\b\\p{L})\\s+(?=\\p{L}\\b)", ""); // remove spaces separating single letters
System.out.println(s);
s = s.replaceAll("\\s+(?=\\P{L})", ""); // remove spaces before non-letters
System.out.println(s);
s = s.replaceAll("(\\P{L})\\1+", "$1"); // remove repeated non-letters
System.out.println(s);
s = s.replaceAll("@", "a"); // replace '@' with 'a'
System.out.println(s);
输出
h e l l o, world! ! am gl@d to see you!
hello, world! ! am gl@d to see you!
hello, world!! am gl@d to see you!
hello, world! am gl@d to see you!
hello, world! am glad to see you!