我有一個包含幾個特殊字符的字符串,只需刪除幾個特殊字符(~ 和 `)。我已經編寫了下面的代碼,但是當我打印分割的字符串時,值也變空。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
提交
取消