为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式删除java中的特殊字符

正则表达式删除java中的特殊字符

MYYA 2023-12-13 16:25:56
我有一个包含几个特殊字符的字符串,只需删除几个特殊字符(~ 和 `)。我已经编写了下面的代码,但是当我打印分割的字符串时,值也变空。String str = "ABC123-xyz`~`XYZ 1.7A";String[] str1= varinaces.split("[\\~`]");        for(int i=0; i< str1.length ; i++){            System.out.println("str==="+ parts[i] );        }输出:str===ABC123-xyz str=== str=== str===XYZ 1.7A为什么空字符串也打印在这里?
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

这是因为当您使用该.split()方法时,它会返回一个包含 4 个项目的 String 数组,如下所示:


String[4] { "ABC123-xyz", "", "", "XYZ 1.7A" }

然后在for循环中打印该数组的所有项目。您可以使用以下方法来解决它:


for(int i=0; i< str1.length ; i++){

if(parts[i].compareTo("") > 0) {

    System.out.println("str==="+ parts[i] );

}           

}


查看完整回答
反对 回复 2023-12-13
?
慕村9548890

TA贡献1884条经验 获得超4个赞

您正在拆分一个特殊字符...拆分为 1 个或多个

String[] str1= varinaces.split("[~`]+");

另请注意,蒂尔达~不需要转义。


查看完整回答
反对 回复 2023-12-13
?
精慕HU

TA贡献1845条经验 获得超8个赞

split 方法返回正则表达式的每个匹配项周围的内容。您的正则表达式[~`], 匹配单个字符“~”或“`”。字符串中由该正则表达式的匹配项分隔的部分确定如下:

返回字符串“ABC123-xyz”,因为它是在字符“`”处从给定字符串中分离出来的。在该字符和下一个匹配项之间“~”是空字符串,依此类推。如果你想让它匹配更多,使用[~`]+


查看完整回答
反对 回复 2023-12-13
  • 3 回答
  • 0 关注
  • 66 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信