Java从字符串的开头和结尾删除所有非字母数字字符

时间:2014-07-26 03:02:49

标签: java regex string replace alphanumeric

我知道如何替换字符串中的所有非字母数字字符,但是如何从字符串的开头和结尾处替换它?

我需要这个字符串:

" theString,"

是:

theString

替换字符串中的所有非字母数字字符:

s = s.replaceAll("[^a-zA-Z0-9\\s]", "");

5 个答案:

答案 0 :(得分:8)

使用^(在字符串的开头匹配)和$(在最后匹配)锚点:

s = s.replaceAll("^[^a-zA-Z0-9\\s]+|[^a-zA-Z0-9\\s]+$", "");

答案 1 :(得分:1)

使用:

s.replaceAll("^[^\\p{L}^\\p{N}\\s%]+|[^\\p{L}^\\p{N}\\s%]+$", "")

而不是:

s.replaceAll("^[^a-zA-Z0-9\\s]+|[^a-zA-Z0-9\\s]+$", "")

p{L}是任何语言的任何一种信件 p{N}是任何脚本中的任何数字字符 用于基于拉丁语的脚本,当需要非英语语言时,例如西班牙语,例如:éstas,apuntó;将后者变为; stas和apunt。前者也适用于非拉丁语言 对于所有印欧语系,请为阿拉伯语和希伯来语元音添加p{Mn}

s.replaceAll("^[^\\p{L}^\\p{N}^\\p{Mn}\\s%]+|[^\\p{L}^\\p{N}^\\p{Mn}\\s%]+$", "")

对于德拉威语,元音可以包围辅音 - 而不是闪族语言,在这些语言中,它们“在”字符内 - 如ಾ。为此,请使用p{Me}。对于所有语言,请使用:

s.replaceAll("^[^\\p{L}^\\p{N}^\\p{M}\\s%]+|[^\\p{L}^\\p{N}^\\p{M}\\s%]+$", "")

请参阅regex tutorial for a list of Unicode categories

答案 2 :(得分:0)

yourString=yourString.replaceAll("^\\W+|\\W+$","");

答案 3 :(得分:-1)

s = s.replaceAll(“[^ a-zA-Z0-9]”,“”);

答案 4 :(得分:-1)

番石榴的CharMatcher提供了一个简洁的解决方案:

CharMatcher.javaLetterOrDigit().negate().trimFrom(input);