我有以下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
,因为上面的代码在每次迭代时都会构建一个新字符串:复制太多。