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

我有一个包含几个特殊字符的字符串,只需删除几个特殊字符(~ 和 `)。我已经编写了下面的代码,但是当我打印分割的字符串时,值也变空。


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


为什么空字符串也打印在这里?


MYYA
浏览 152回答 3
3回答

长风秋雁

这是因为当您使用该.split()方法时,它会返回一个包含 4 个项目的 String 数组,如下所示:String[4] { "ABC123-xyz", "", "", "XYZ 1.7A" }然后在for循环中打印该数组的所有项目。您可以使用以下方法来解决它:for(int i=0; i< str1.length ; i++){if(parts[i].compareTo("") > 0) {&nbsp; &nbsp; System.out.println("str==="+ parts[i] );}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}

慕村9548890

您正在拆分一个特殊字符...拆分为 1 个或多个:String[]&nbsp;str1=&nbsp;varinaces.split("[~`]+");另请注意,蒂尔达~不需要转义。

精慕HU

split 方法返回正则表达式的每个匹配项周围的内容。您的正则表达式[~`], 匹配单个字符“~”或“`”。字符串中由该正则表达式的匹配项分隔的部分确定如下:返回字符串“ABC123-xyz”,因为它是在字符“`”处从给定字符串中分离出来的。在该字符和下一个匹配项之间“~”是空字符串,依此类推。如果你想让它匹配更多,使用[~`]+
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java