我有一个包含几个特殊字符的字符串,只需删除几个特殊字符(~ 和 `)。我已经编写了下面的代码,但是当我打印分割的字符串时,值也变空。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] );
}
}
慕村9548890
TA贡献1884条经验 获得超4个赞
您正在拆分一个特殊字符...拆分为 1 个或多个:
String[] str1= varinaces.split("[~`]+");
另请注意,蒂尔达~
不需要转义。
精慕HU
TA贡献1845条经验 获得超8个赞
split 方法返回正则表达式的每个匹配项周围的内容。您的正则表达式[~`]
, 匹配单个字符“~”或“`”。字符串中由该正则表达式的匹配项分隔的部分确定如下:
返回字符串“ABC123-xyz”,因为它是在字符“`”处从给定字符串中分离出来的。在该字符和下一个匹配项之间“~”是空字符串,依此类推。如果你想让它匹配更多,使用[~`]+
添加回答
举报
0/150
提交
取消