1. 程式人生 > >java Split如何去除一個空格和多個空格

java Split如何去除一個空格和多個空格

用Split函式可以去除輸入一個字串中的空格,並且一半都是將它儲存在一個字串陣列之中

例如:

  1. import java.util.Scanner;    
  2. public class Main {    
  3.     public static void main(String[] args) {    
  4.         Scanner in = new Scanner(System.in);    
  5.         String s=in.nextLine();   //如果我輸入:0 1 2 3 4  
  6.         String[] str=s.split(" ");  
  7.         System.out.println(s);  
  8.         System.out.println(str[3]);  
  9.     }    
  10. }    

輸出結果是:

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,然後後面的情況重複,只有一個空格,情況是結果是理想的,多個空格,又是重複如此

解決方法:

  1. import java.util.Scanner;    
  2. public class Main {    
  3.     public static void main(String[] args) {    
  4.         Scanner in = new Scanner(System.in);    
  5.         String s=in.nextLine();  
  6.         String[] str=s.split("\\s+ ");   //改動這裡  
  7.         System.out.println(s);  
  8.         System.out.println(str[3]);  
  9.     }    
  10. }    

利用正則表示式,就可以實現我們理想的結果,

例如:輸入2(空)(空)(空)3

結果:str[0]=2

             str[1]=3