2012-05-17 102 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 = ""; 
     } 
    } 
相关问题