這幾天開始重新學習Java,在課程最後有一道題要求找出設備名稱,題目如下:
1.編寫程序,將字符串“打印機*鐘錶//自行車**雨傘%%收音機??電腦”進行拆分,輸出每
個設備的名字。
剛開始思路:將// 、**、%%、??等符號全替換爲*,然後再按*進行分割,發現效率太低而且需要額外變量存儲每次替換後的字符串。後面突然想到可以使用正則表達式:str.split("%%|\\*|\\//|\\?"),代碼如下:
public class Stringsplit{
public static void main(String args[]){
String str = "打印機*鐘錶//自行車**雨傘%%收音機??電腦";
String temp[] = str.split("%%|\\*|\\//|\\?");
for(String word : temp)
{
System.out.println(word);
}
}
}
結果如下,發現有不必要的空行,經過分析當分割連續兩個*和?時會輸出兩個空行。經過思考可以使用正則表達式中的+符號,表示一個或多個。
改進代碼如下:
public class Stringsplit{
public static void main(String args[]){
String str = "打印機*鐘錶//自行車**雨傘%%收音機??電腦";
//利用+表示一個或多個
String temp[] = str.split("%%|\\*+|\\//|\\?+");
for(String word : temp)
{
System.out.println(word);
}
}
}
結果如下,完美解決問題: