一次为java String添加一个字符

时间:2012-05-17 14:04:54

标签: java string

我有一个非常简单的问题,事实上我有点沮丧,我不能自己解决这个问题,但这里是:

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 = "";
            }
        }

4 个答案:

答案 0 :(得分:6)

我将假设strBuffer是java StringBuffer的一个实例;如果是这样 - 你应该使用strBuffer.append()

但是有一种更简单的方法来做你想要的事情:

  

String [] strBuff = arg.split(“”); //按空格分割

答案 1 :(得分: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
    // ...
}

答案 2 :(得分: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 = "";
        }
    }

答案 3 :(得分:0)

尝试打印出最后从该行获得的角色本身。 如果你没有得到任何角色,那么你显然没有得到你在争论数组中寻找的东西。