首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用StringBuilder时从最后删除逗号

在使用StringBuilder时从最后删除逗号
EN

Stack Overflow用户
提问于 2016-01-12 09:54:30
回答 6查看 767关注 0票数 2

我有下面的Java程序,我不希望",“在我的最后一个元素之后被分配,该怎么办?

代码语言:javascript
运行
复制
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);

输出应该是400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450 ->最后不带逗号

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-01-12 10:01:10

只是简单的

代码语言:javascript
运行
复制
for (int i = startRange; i <= endRange; i++) {
   sb.append(i);
   if(i != endRange)
        sb.append(",");
}
票数 0
EN

Stack Overflow用户

发布于 2016-01-12 09:57:53

对于Java 8,您可以切换到新的StringJoiner类,它正是为此目的添加的。

代码语言:javascript
运行
复制
    StringJoiner sb = new StringJoiner(",");
    for (int i = startRange; i <= endRange; i++) {
        sb.add(String.valueOf(i));
    }
    System.out.println(sb.toString());

通过手动操作,我建议在项目之前添加逗号,然后使用子字符串(1):

代码语言:javascript
运行
复制
    for (int i = startRange; i <= endRange; i++) {
        sb.append(",").append(i);
    }
    //Check for empty before!
    System.out.println(sb.substring(1));
票数 3
EN

Stack Overflow用户

发布于 2016-01-12 11:24:35

正如@Jan所说,如果您有StringJoiner,请使用Java8。否则,可以在新条目之前添加分隔符,并通过将分隔符初始化为空来区别对待第一项。

代码语言:javascript
运行
复制
   String separator = "";
    for (int i = startRange; i <= endRange; i++) {
        sb.append(separator).append(i);
        separator = ",";
    }

这是Java8版本

代码语言:javascript
运行
复制
    StringJoiner sb = new StringJoiner(",");
    for (int i = startRange; i <= endRange; i++) {
        sb.add(String.valueOf(i));
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34740362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档