2012-05-17 47 views
0

我有一個非常簡單的問題,其實我有點沮喪,我解決不了這個對我自己的,但在這裏它是:追加一次一個Java字符串一個字符

strBuffer += arg.charAt(i); 

隨着這一行我試圖解析一個值並將它逐個字符地添加到一個新的字符串中。我這樣做是爲了將一個單獨的長字符串分成一個較小的字符串數組。

實例,這個字符串

-time delayed -run auto -mode go_n_run 

將成爲該陣列

strBuffer [0] = -time 
strBuffer [1] = delayed 
strBuffer [2] = -run 
strBuffer [3] = auto 
strBuffer [4] = -mode 
strBuffer [5] = go_n_run 

所以代碼與 '+ =' 不工作,沒有行被放在我的strBuffer。所以,我已經試過一些更「複雜」,我在一個論壇上發現:

strBuffer.concat(new String(new char[]{arg.charAt(i)})); 

但相同的結果,沒有放在strBuffer,

所以,任何提示,將不勝感激

感謝

編輯:下面是完整的方法

String[] args = new String[2 * ARG_LIMIT]; 
     int index = 0; 

     for(int i = 0; i < arg.length(); i++) 
     { 
      String strBuffer = new String(); 

      if(arg.charAt(i) != ' ') 
      { 

          // The two methods I've tried 
       strBuffer.concat(new String(new char[]{arg.charAt(i)})); 

       strBuffer += arg.charAt(i); 

      } 
      else if(arg.charAt(i) == ' ') 
      { 
       args[index] = strBuffer; 
       index++; 
       strBuffer = ""; 
      } 
     } 
+0

你看過這個類的API嗎?如果是這樣,你會看到使用的方法。那麼,爲什麼不使用for循環和'append(...)'方法呢?編輯:或者更好,使用split作爲@Perception發佈。他應該做出答案。 –

+0

你的意思是什麼不起作用?什麼實際上存儲在'strBuffer'中? –

+1

什麼類是'strBuffer'?此外,看起來像你可以只使用'String.split'而不是試圖重新發明輪子。 – Perception

回答

6

我會ASSU我認爲strBuffer是java的StringBuffer的一個實例;如果是這樣 - 你應該使用strBuffer.append()

但有一種方法更簡單的方法做的東西你想:

的String [] strBuff = arg.split(」「); //按空格分割

0

嘗試打印出您在最後從該行獲得的字符本身。 如果你沒有得到任何字符,那麼你顯然沒有得到你在參數數組中找到的東西。

+0

我可以打印字符就好,但是當我調試我的數組時,它只是顯示「」 – nevero

+0

我想了解你的代碼,但它似乎有點奇怪。你爲什麼要這樣做,如果你找到空間或沒有人物? strBuffer =「」; – OmniOwl

1

您應該使用StringTokenizer。下面是代碼:

// the first parameter is the string to be parsed, the second parameter is the delimiters 
StringTokenizer st = new StringTokenizer("-time delayed -run auto -mode go_n_run", " "); 
while (st.hasMoreTokens()) { 
    String s = st.nextToken(); 
    // append s to your strBuffer 
    // ... 
} 
1

它看起來像你試圖改寫String.split()

更具體地說,你這樣做是硬的方式:

String[] args = arg.split(" ",2*ARG_LIMIT); 

你嘗試過什麼沒」因爲strBuffer沒有存活到for循環的下一次迭代。此代碼可以工作:

String[] args = new String[2 * ARG_LIMIT]; 

    int index = 0; 
    String strBuffer = new String(); 

    for(int i = 0; i < arg.length(); i++) 
    { 

     if(arg.charAt(i) != ' ') 
     { 

      strBuffer += arg.charAt(i); 

     } 
     else if(arg.charAt(i) == ' ') 
     { 
      args[index] = strBuffer; 
      index++; 
      strBuffer = ""; 
     } 
    }