Java 使用StringBuilder时已从上一个中删除逗号
我有下面的Java程序,我不想在我的最后一个元素之后被赋值,该怎么办Java 使用StringBuilder时已从上一个中删除逗号,java,stringbuilder,stringbuffer,Java,Stringbuilder,Stringbuffer,我有下面的Java程序,我不想在我的最后一个元素之后被赋值,该怎么办 String range = "400-450"; Integer startRange = null; Integer endRange = null; StringTokenizer st = new StringTokenizer(range,"-"); while(st.hasMoreTokens()) { startRang
String range = "400-450";
Integer startRange = null;
Integer endRange = null;
StringTokenizer st = new StringTokenizer(range,"-");
while(st.hasMoreTokens()) {
startRange = Integer.parseInt(st.nextToken());
endRange= Integer.parseInt(st.nextToken());
}
StringBuilder sb = new StringBuilder();
for (int i = startRange; i <= endRange; i++) {
sb.append(i).append(",");
}
System.out.println(sb);
String range=“400-450”;
整数startRange=null;
整数endRange=null;
StringTokenizer st=新的StringTokenizer(范围“-”);
而(st.hasMoreTokens()){
startRange=Integer.parseInt(st.nextToken());
endRange=Integer.parseInt(st.nextToken());
}
StringBuilder sb=新的StringBuilder();
对于(int i=startRange;i,最后不带逗号)对于Java 8,您可以切换到添加的新类,该类正是为此目的而添加的:
StringJoiner sb=新的StringJoiner(“,”);
对于(int i=startRange;i只需让最后一个附加逗号的循环在到达最后一个元素之前停止:
String range = "400-450";
Integer startRange = null;
Integer endRange = null;
StringTokenizer st = new StringTokenizer(range,"-");
while(st.hasMoreTokens()) {
startRange = Integer.parseInt(st.nextToken());
endRange= Integer.parseInt(st.nextToken());
}
StringBuilder sb = new StringBuilder();
// here, the "<=" was changed to "<"
for (int i = startRange; i < endRange; i++) {
sb.append(i).append(",");
}
// append last element
sb.append(endrange)
System.out.println(sb);
String range=“400-450”;
整数startRange=null;
整数endRange=null;
StringTokenizer st=新的StringTokenizer(范围“-”);
而(st.hasMoreTokens()){
startRange=Integer.parseInt(st.nextToken());
endRange=Integer.parseInt(st.nextToken());
}
StringBuilder sb=新的StringBuilder();
//在这里,在每个i
之后添加“您要添加的”,“
只有在未到达endRange时,才尝试附加“”,“
”
做:
for(inti=startRange;iJava<8使用Joiner(番石榴)
List<Integer> numbers = Lists.newArrayList(1, 3, 4, 5, 23);
System.out.println(Joiner.on(",").join(numbers));
List number=Lists.newArrayList(1,3,4,5,23);
System.out.println(Joiner.on(“,”).join(number));
输出为:
1,3,4,5,23就这么简单
for (int i = startRange; i <= endRange; i++) {
sb.append(i);
if(i != endRange)
sb.append(",");
}
for(int i=startRange;i如@Jan所说,如果您有Java8,请使用StringJoiner
。否则,您可以在新条目之前添加分隔符,并通过将分隔符初始化为空来区别对待第一项
String separator = "";
for (int i = startRange; i <= endRange; i++) {
sb.append(separator).append(i);
separator = ",";
}
字符串分隔符=”;
对于(int i=startRange;我最后还是逗号(,)来了,我不想这样。谢谢你的提示!请参阅倒数第二行的更正!这不是编译为StringJoiner.add()
接受CharSequence
而不是整数。你需要sb.add(String.valueOf(i))
请不要只发布代码-添加一个解释,说明为什么这可以解决问题。
List<Integer> numbers = Lists.newArrayList(1, 3, 4, 5, 23);
System.out.println(Joiner.on(",").join(numbers));
for (int i = startRange; i <= endRange; i++) {
sb.append(i);
if(i != endRange)
sb.append(",");
}
String separator = "";
for (int i = startRange; i <= endRange; i++) {
sb.append(separator).append(i);
separator = ",";
}
StringJoiner sb = new StringJoiner(",");
for (int i = startRange; i <= endRange; i++) {
sb.add(String.valueOf(i));
}