java 字符串去掉特殊字符_如何从字符串中删除特殊字符?

本文详细介绍了如何在Java中使用replaceAll()函数替换字符串中的特殊字符,包括正则表达式的使用技巧和不同方法的选择,如移除标点、保留字母和空白。还讨论了Unicode字符和正则表达式元字符的注意事项。
摘要由CSDN通过智能技术生成

这取决于您定义为特殊字符的内容,但是请尝试replaceAll(...):

String result = yourString.replaceAll("[-+.^:,]","");

请注意,该^字符不能是列表中的第一个字符,因为您要么必须对其进行转义,否则将意味着“除这些字符外的任何字符”。

另一个注意事项:-字符必须是列表中的第一个或最后一个字符,否则您必须对其进行转义,否则它将定义一个范围(例如:-,,表示“ :to 范围内的所有字符” ,)。

所以,为了保持一致性,而不是依赖于角色定位,你可能想逃避所有那些正则表达式中有特殊含义的字符(下面的列表是不完整的,所以要注意的其他人物,如(,{,$ 等) :

String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");

如果要摆脱所有标点和符号,请尝试以下正则表达式:(\p{P}\p{S}请注意,在Java字符串中,您必须转义反斜杠:)"\\p{P}\\p{S}"。

如果可以精确定义字符串中应保留的内容,则第三种方法可能是这样的:

String  result = yourString.replaceAll("[^\\w\\s]","");

这意味着:替换所有不是单词字符(在任何情况下为az,0-9或_)或空格的内容。

编辑:请注意,还有其他两种模式可能会有所帮助。但是,我无法全部解释它们,因此请查看regular-expressions.info的参考部分。

如Ray所建议的,这是“定义允许的字符”方法的限制性较小的替代方法:

String  result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");

正则表达式匹配所有不是任何语言的字母,也不是分隔符(空格,换行符等)的所有内容。请注意,您不能使用[\P{L}\P{Z}](大写P表示不具有该属性),因为那意味着“不是字母或不是空格的所有内容”,几乎所有内容都匹配,因为字母不是空格,反之亦然。

有关Unicode的其他信息

某些unicode字符似乎由于不同的编码方式(例如单个代码点或代码点的组合)而引起问题。有关更多信息,请参考regular-expressions.info。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值