Java 根據多個連續的符號分割字符串

    這幾天開始重新學習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);
		}
	}
}

結果如下,完美解決問題:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章