java Split如何去除一個空格和多個空格
阿新 • • 發佈:2019-01-26
用Split函式可以去除輸入一個字串中的空格,並且一半都是將它儲存在一個字串陣列之中
例如:
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- String s=in.nextLine(); //如果我輸入:0 1 2 3 4
- String[] str=s.split(" ");
-
System.out.println(s);
- System.out.println(str[3]);
- }
- }
輸出結果是:
0 1 2 3 4
3
可是會出現這種情況,如果我輸入的是0 1 2 3 4,在2和3之間有3個的空格,那還會有用嗎?
結果輸出是:
0 1 2 3 4
也就是沒有輸出str[3],至少看上去是這樣的,然後我分析得出結論,其實是這樣的,
舉個例子,我輸入2(空)(空)(空)3,執行Split函式後得到的String str陣列
是str[0]=2 ,str[1]=(空),str[2]=(空),str[3]=3
也就是說,Split函式在執行多空格判斷時,會只將第一個空格忽略,其餘空格都放入陣列,直到遇到非空格數3,然後後面的情況重複,只有一個空格,情況是結果是理想的,多個空格,又是重複如此
解決方法:
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- String s=in.nextLine();
- String[] str=s.split("\\s+ "); //改動這裡
- System.out.println(s);
-
System.out.println(str[3]);
- }
- }
利用正則表示式,就可以實現我們理想的結果,
例如:輸入2(空)(空)(空)3
結果:str[0]=2
str[1]=3