我知道如何替换字符串中的所有非字母数字字符,但是如何从字符串的开头和结尾处替换它?
我需要这个字符串:
" theString,"
是:
theString
替换字符串中的所有非字母数字字符:
s = s.replaceAll("[^a-zA-Z0-9\\s]", "");
答案 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%]+$", "")
答案 2 :(得分:0)
yourString=yourString.replaceAll("^\\W+|\\W+$","");
答案 3 :(得分:-1)
s = s.replaceAll(“[^ a-zA-Z0-9]”,“”);
答案 4 :(得分:-1)
番石榴的CharMatcher提供了一个简洁的解决方案:
CharMatcher.javaLetterOrDigit().negate().trimFrom(input);