【问题标题】:How to remove last seperator in a string within a loop? [duplicate]如何删除循环内字符串中的最后一个分隔符? [复制]
【发布时间】:2017-01-11 18:48:34
【问题描述】:

我已经搜索了几个小时来寻找这种问题,但我没有运气。

在 Java 中,我尝试获得这种输出:

1、2、3

(不使用 StringBuilder)

我得到的结果是:

1、2、3,

用代码:

for(int i=1; i <= 3; i++){
    String output = "";
    output += i + ", ";
    System.out.print(output);
}

p.s 我的代码没有使用任何数组。

【问题讨论】:

  • String output = null; for(int i=1; i &lt;= 3; i++) { if (null == output) output = i; else output += ", "+i; }
  • 复制stackoverflow.com/questions/1515437/…,无需重新发明轮子。
  • @Frederik.L 很抱歉,我认为您提到的是数组。
  • 不要在最后删除它,你不应该在没有必要的时候添加它。我会为此使用循环体{ if (i&gt;1) output+=", "; output += i; },但在 cmets 和答案中已经给出了类似的解决方案。
  • @AldwinB 用逗号分隔的项目代表一个数组。那么为什么不将它存储在一个数组中以便于阅读呢?通过将一组数字视为数组,您将无需为最后一项手动使用 if-else 技巧。

标签: java string loops for-loop


【解决方案1】:

从 Java 8+ 开始,这可以使用 join 方法来实现。

String.join(",", 列表)

【讨论】:

    【解决方案2】:

    要小心最终打印的位置,因为您有一个累加器字符串变量,该变量将用于在最后产生印象 另外还要考虑你在哪里声明你的变量在变量中会被创建几次迭代for,最好在循环前作证

    使用substring带两个参数开始位置,结束位置

    String output = "";
     for(int i=1; i <= 3; i++){
      output += i + ", ";
    }
    System.out.print(output.substring(0, output.length()-2)); 
    //obtains from 1, 2.3 and omit the, end with the length () - 1 as the final //position
    

    输出

    1、2、3

    【讨论】:

    • 是否有在每个逗号后添加空格并在最后一个数字上删除两者?例如:1、2、3
    • 是的,但是需要子串的最终位置为-2,我会修改示例代码
    • 谢谢!这解决了我的问题。
    【解决方案3】:

    这是一种变体,它在循环中只有一个三元表达式来构建您想要的输出。

    String output = "";
    for (int i=1; i <= 3; i++) {
        output += (i > 1) ? ", " + i : i;
    }
    
    System.out.print(output);
    

    【讨论】:

    • 为什么是三元,而不仅仅是{ if (i&gt;1) output+=", "; output += i; }
    • @Marco13 三元表达式将所有内容放在一行中。你不能只写有效的代码,你必须让它变得漂亮。
    • 美在旁观者的眼中,我认为一个好的 ol' if 在这里更直接。特别是,我不喜欢i 出现两次 - 但是当i 类似于"The element with index "+i+" of some list is "+list.get(i) 时,这种丑陋可能会更加明显,并且在这个简单的情况下并不那么重要。
    【解决方案4】:

    虽然可能有很多方法可以做到这一点,但我最喜欢的一种方法是不要在 for 循环中引入任何不必要的比较。

    所以你可以做的只是第一个字符,你可以直接把它放在循环之外的字符串中,对于所有其他的,你可以在原始字符串后面附加", &lt;number&gt;"

    String output = "1";
    
    for(int i=2; i <= 3; i++){
        output += ", " + i;
    }
    
    System.out.print(output);
    

    【讨论】:

      【解决方案5】:

      简单:

      String output = "1";
      for(int i=2; i <= 3; i++){
          output += ", " + i;
      }
      System.out.print(output)
      

      这会给你

      1、2、3

      无需使任务复杂化。这种事情时有发生。只需将第一种情况视为特殊情况即可。

      【讨论】:

        【解决方案6】:

        试试这个更容易,只需检查字符串长度,如果变量附加分隔符有什么:

        String output = "";
        for(int i=1; i <= 3; i++){
           if(output .length>0)
           {
             output +=',';
           }
           output += i;
           System.out.print(output);
        }
        

        JQuery 的代码 sn-p:

        var output = "";
        for(var i=1; i <= 3; i++){
           if(output .length>0)
           {
             output +=',';
           }
           output += i;
           console.log(output);
        }
        &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

        【讨论】:

          【解决方案7】:

          您可以简单地使用 java 8 流 api

          List<Integer> list = new ArrayList<>();
             list.add(1);
             list.add(2);
             list.add(3);
          String s = list.stream().map(i -> i.toString ()).collect(Collectors.joining(","));
          

          【讨论】:

            猜你喜欢
            • 2013-02-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-17
            • 1970-01-01
            • 1970-01-01
            • 2016-05-27
            • 2016-02-29
            相关资源
            最近更新 更多