2012-05-02 140 views
-2

我已經搜索了很多關於正則表達式的問題,最後我發現使用「\\ s +」拆分字符串更好
但是,它對原始字符串沒有任何影響:拆分空格不能正常工作

private static void process(String command) { 
    command = command.substring(0, command.length() - 1); 
    String[] splitted = command.split("\\s+"); 
    for (String str : splitted) { 
     System.out.println(str); 
    } 
} 

樣本輸入:

Boolean b = new Boolean(true); 

優選輸出:

[Boolean,b,=,new,Boolean(true)] 

但我的方法輸出是:

Boolean b = new Boolean(true) 
+3

你的問題是什麼?這種方法的輸入,預期輸出和實際輸出是什麼? –

+3

爲什麼'substring'? –

+1

如果你想在命令行中解析參數,請查看http://commons.apache.org/cli/ –

回答

2

如果您想獲得「優先輸出」使用Arrays.toString(splitted)。但是,您的代碼的工作方式與其應有的相似。它在一個新行上打印數組的每個元素。所以這個代碼:

private static void process(String command) { 
    command = command.substring(0, command.length() - 1); 

    String[] splitted = command.split("\\s+"); 

    for (String str : splitted) { 
     System.out.println(str); 
    } 

    System.out.println(Arrays.toString(splitted).replace(" ", "")); 
    } 

    public static void main(String[] args) { 
    process("Boolean b = new Boolean(true); "); 
    } 

產生這樣的輸出:

Boolean 
b 
= 
new 
Boolean(true); 
[Boolean, b, =, new, Boolean(true);] 

注意,substring操作並不像你想,因爲你的輸入字符串後面的空格的工作。您可以事先使用command.trim()來擺脫任何前導/尾隨空格。

編輯

我編輯我的代碼,因爲,作爲@Tim本德說,有在Arrays.toString輸出數組元素之間的空間,這就是不完全的OP想要的東西。

+0

我用我說的那個替換了你的方法,但輸出結果不是你說的! – SAbbasizadeh

+0

將我的'main'方法添加到該類中,運行它,並告訴我你得到了什麼。 –

+0

是的;你是對的。但爲什麼它不適用於我的主要? – SAbbasizadeh