如何在不使用复杂代码结构的情况下在 Java 中连接字符串



我有以下java代码:

String strTest = null;
for (AlternativeEntity alternativeEntity : msg.Guidance()
      .getAlternatives()) {
    strTest = strTest + alternativeEntity.getArrivalStation().getName() + ", ";
}

输出如下所示:

nullabc, xyz, oop, 

我该如何解决这个问题和非常糟糕的字符格式?如果我能创建这样的输出,那就太好了:

abc, xyz, oop

将字符串初始化为 ":

 String strTest = "";

或者,您应该使用 StringBuilder:

 StringBuilder builder = new StringBuilder();
 for (AlternativeEntity alternativeEntity : msg.Guidance()
  .getAlternatives()) {
     builder.append(alternativeEntity.getArrivalStation().getName()).append(", ");
 }

这将产生更好的性能。

strTest初始化为:

String strTest = "";

此外,删除最后一个逗号,

strTest=strTest.substring(0, strTest.length()-1);

您可以使用 Guava 的 Joiner#join(Iterable parts(。例如:

Joiner joiner = Joiner.on(", ").skipNulls();
String result = joiner.join(list);
System.out.println(result);

在这里,列表的所有元素都将打印为逗号分隔,没有任何尾随逗号。此外,将跳过所有null元素。

更多信息:

  • 字符串解释

Java提供了StringBuilder类就是为此目的,它简单易用。

    StringBuilder str = new StringBuilder("India ");
     //to append "Hi"
    str.append("Hi");
    // print the whole string
    System.out.println("The string is "+str)

输出将是:字符串是印度嗨

单击此处了解有关 StringBuilder 类的更多信息

替换字符串 strTest = null; by String strTest = ";

更改

 String strTest = null;

String strTest = "";

你为什么不使用:

String strTest = "";

最后:

if(strTest.endsWith(", "))
   strTest = strTest.substring(0, strTest.length()-2);

初始化String strTest="";

跳过最后一个逗号,'在 For 循环外使用:

strTest = strTest.substring(0,strTest.trim().length()-1);
String strTest = null;
for (AlternativeEntity alternativeEntity : msg.Guidance().getAlternatives()) {
  String name = alternativeEntity.getArrivalStation().getName();
  strTest = (strTest == null) ? name : strTest +  ", " + name;
}

如果列表很长,则应使用StringBuilder而不是String进行strTest,因为上面的代码在每次迭代时都会构建一个新字符串:复制太多。

最新更新