每次追加一个java字符串一个字符
我有一个非常简单的问题,事实上,我有点沮丧,因为我不能自己解决这个问题,但这里是:每次追加一个java字符串一个字符,java,string,Java,String,我有一个非常简单的问题,事实上,我有点沮丧,因为我不能自己解决这个问题,但这里是: strBuffer += arg.charAt( i ); 在这一行中,我试图解析一个值,并将其逐字符添加到一个新字符串中。我这样做是为了把一个长字符串分割成一个小字符串数组 例如,这个字符串 -time delayed -run auto -mode go_n_run 将成为此阵列 strBuffer [0] = -time strBuffer [1] = delayed strBuffer [2] =
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 = "";
}
}
String[]args=新字符串[2*ARG_LIMIT];
int指数=0;
对于(int i=0;i
我假设strBuffer是java的StringBuffer
的一个实例;如果是这样-您应该使用strBuffer.append()
但是有一种更简单的方法来做你想做的事情:
字符串[]strBuff=arg.split(“”)//按空间分割
试着打印出你从结尾那一行得到的字符本身。
如果没有得到字符,则显然没有得到参数数组中要查找的字符。应该使用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
// ...
}
看起来你想重写 更具体地说,这是一种艰难的方式:
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 = "";
}
}
String[]args=新字符串[2*ARG_LIMIT];
int指数=0;
String strBuffer=新字符串();
对于(int i=0;i
您看过该类的API了吗?如果是这样,您将看到要使用的方法。那么,为什么不使用for循环和append(…)
方法呢?编辑:或者更好,使用拆分为@Perception posted。他应该回答这个问题。你说的不工作是什么意思?strBuffer中实际存储了什么?strBuffer是什么类?另外,在我看来,您可以使用String.split
而不是尝试重新发明轮子。字符串在java中是不可变的对象,您不能向其中添加任何内容。此外,字符串是一个对象,Java没有方法的运算符。我猜你确实不喜欢String的split方法。我可以很好地打印字符,但是当我调试数组时,它只显示“我正在试图理解你的代码,但看起来有点奇怪。”。如果你找到一个空格或者没有字符,为什么要这样做?strBuffer=“”;