如何删除单词周围的字符?

时间:2014-07-30 03:39:42

标签: java regex string

我需要从每个单词的开头和结尾删除所有不按字母顺序排列的字符。例如:

  

- 你好&安培; World- @ 1234 ......

应该是这样的:

  

Hello World 1234

我试过replaceAll,但我不知道我需要删除多少个不同的字符或者这些字符是什么。我尝试了以下方法,但它没有用。

word = resultString.replaceAll("[^a-zA-Z_0-9|$a-zA-Z_0-9]|^-|$-|^--|$--|^---|$---|\\$", "");

仍有一些词语出现破折号。

有没有其他方法可以在不使用replaceAll的情况下执行此操作?

4 个答案:

答案 0 :(得分:1)

试试这个:

resultString = resultString.replaceAll("[^A-Za-z0-9_\\s]","");

这将替换除字母,数字,下划线和空格之外的所有内容。

  

输入:“ - 你好&世界 - @ 1234 ......”

     

输出:“Hello World 1234”

如果您不想在字符串中保留下划线,请将模式更改为[^A-Za-z0-9\\s]

答案 1 :(得分:1)

严格来说,所有答案都不能解决完全作者的要求。问题是他们都会删除特殊字符甚至在单词内部,而不仅仅是#34;从每个单词的开头和结尾删除

以下是修复它的代码:

String str = "--Hello& World-@ 1234...  my email is me@example.com";

// Analyzing every word     
String[] words = str.split("\\s+");
String regex = "^[^a-zA-Z0-9]+|[^a-zA-Z0-9]+$";
String result = "";

for (String word : words) {
    result += word.replaceAll(regex, "") + " ";             
}

System.out.println(result); // gives "Hello World 1234 my email is me@example.com "

正则表达式"^[^a-zA-Z0-9]+|[^a-zA-Z0-9]+$"解释:

^[^a-zA-Z0-9]+匹配单词

开头的一个或多个特殊字符

|

[^a-zA-Z0-9]+$单词末尾有一个或多个特殊字符。

您可以修改正则表达式,以便不删除单词末尾的,.!?:;或其他有意义的字符。

答案 2 :(得分:0)

应该是:

str.replaceAll("[^A-Za-z0-9\\s]","") 

没有下划线,因为OP提到他想要从每个单词的开头和结尾删除所有不按字母顺序排列的字符

输入:

--Hello& World-@ 1234...

输出:

Hello World 1234

当字符串中有下划线时,此answer会失败。

答案 3 :(得分:0)

试试这个, 它取代了字母或单词以外的字符,

word = resultString.replaceAll("[^\\w]", " ");

并输出

Hello World 1234