如何动态追加字符串?

时间:2014-06-12 07:31:22

标签: java string

我的要求是生成以下字符串:

qid<> 0 And qid<> 1 And qid<> 2 And qid<> 3 And qid<> 4 And qid<> 5 And qid<> 6 And qid<> 7 And qid<> 8 And qid<> 9 

所以我喜欢这样:

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
       String deleteQids="qid<> ";
       String deleteqidString1="";

       for(int i=0;i<10;i++) {
         deleteqidString1+=deleteQids+i +" And ";
       }
       System.out.println(deleteqidString1);
    }
}

http://ideone.com/dpFfxF

但最后并且出现。

有人可以告诉我如何摆脱这个吗?

8 个答案:

答案 0 :(得分:2)

您可以明确处理第一次出现:

String deleteqidString1 = deleteQids+i;
for(int i=1; i < 10; i++) {
    deleteqidString1 += " And " + deleteQids + i;
}

编辑:
如评论中所述,StringBuilder是动态构建工具的正确工具。 (但这并没有影响解决方案的逻辑):

StringBuilder deleteqidString1 = new StringBuilder(deleteQids).append(i);
for(int i=1; i < 10; i++) {
    deleteqidString1.append(" And ").append(deleteQids).append(i);
}

答案 1 :(得分:2)

您只需使用String#substring" And "中删除最后一个String,但更有效的方法是使用StringBuilder和“前缀”{{1当索引大于" And "时,例如

0

最终打印出类似......

String deleteQids = "qid<> ";
StringBuilder sb = new StringBuilder(128);
for (int i = 0; i < 10; i++) {
    if (i > 0) {
        sb.append(" And ");
    }
    sb.append(deleteQids).append(i);

}
System.out.println(sb.toString());

答案 2 :(得分:1)

如果你的迭代被修复到10,那么

尝试这个可能有助于这不是最佳方式,但仍然可以得到你想要的东西

如果迭代固定为10

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
                String deleteQids="qid<> ";String deleteqidString1="";
for(int i=0;i<10;i++)
{
            if(i==9)
            {
                 deleteqidString1+=deleteQids+i ;
            }
            else
            {
                 deleteqidString1+=deleteQids+i +" And ";
            }


}
System.out.println(deleteqidString1);
    }
}

答案 3 :(得分:1)

如果你对字符串操作很多,总是使用StringBuilder,因为它更有效。

  int qids = -1;
  StringBuilder sb = new StringBuilder();

  if(qids>=0) {
    for(int i=0;i<qids-1;i++)
    {
      sb.append("qid<> ");
      sb.append(i);
      sb.append(" And ");

    }

    sb.append("qid<> ");
    sb.append(qids);
  }

  System.out.println(sb.toString());

答案 4 :(得分:1)

下面给出的代码片段完成了这项工作。它为每个迭代添加'And',除了最后一个,即。当我等于9时。

String deleteQids="qid<> ";
String deleteqidString1="";
for(int i=0;i<10;i++)
{
    deleteqidString1 += deleteQids + i ;
    if (i < 9) deleteqidString1 += " And ";
} 

答案 5 :(得分:0)

最好使用 StringBuilder 。然后,你必须找到一个系统来知道你的&#34;和&#34;。

以下是一些提示:

  • &#34;和&#34;在整数之后。 (但不是在最后一个之后)
  • &#34;和&#34;之后是&#34; qid&lt;&gt;&#34;

结合这些条件,您可以构建String。

答案 6 :(得分:0)

如果您在循环的最后一次迭代中,或者在完成循环后修改String以将其删除,则更改逻辑以不附加“And”。 这些基本上是你的2个选项,你选择的选项取决于个人喜好和确切的应用逻辑。
在这个简单的例子中,我选择了第一个,在一个更现实的场景中,使用StringBuilder构造String,并在某些Collection上使用Iterator,第二个选项通常更容易实现,当然更容易阅读。

之类的东西
deletequidString1 += deleteQuids+1;
if (i < 10) deleteQuidString1 += " And ";

这是你最好的选择。

答案 7 :(得分:0)

使用此代码

   String deleteQids="qid<> ";
   String deleteqidString1="";

   for(int i=0;i<10;i++) {
      if(i!=9)
  {   
     deleteqidString1+=deleteQids+i +" And ";
 }
 else
 {
     deleteqidString1+=deleteQids+i +"";
 }
   }
   System.out.println(deleteqidString1);
  }