如何在 Java 中的字符串中插入字符

How to insert characters inside a string in Java

在我的应用程序中,用户会 select 10 个选项中的多个选项。 selected 选项的数量可能从 1 到 10 不等。现在我试图通过在数字之间插入逗号来分隔这些 selected 选项。 我得到这样的数字:

 123456
 346
 12
 5

现在我正尝试像这样转换它们:

 1,2,3,4,5
 3,4,6
 1,2
 5(no comma)

为此我正在尝试 StringBuffer,但我得到了错误的输出:

 For 12 output is 1,2
 For 5 output is 5
 For 123 output is 1,,23
 For 123456 output is 1,,,,,23456

你能帮我找出代码中的错误吗?

String str = jTextField1.getText();
StringBuffer sb = new StringBuffer(str);
int x = 0;    
for (int i = 0; i < str.length() - 1; i++) {    
   sb.insert(++x, ",");
}
System.out.println(sb);

@SMA 的答案有效,但使用您的代码作为基础的另一种解决方案如下:

随着您插入逗号,您的 StringBuffer 正在增长,这使得您的 x 索引与缓冲区的实际长度不同步,因此您需要在插入逗号后再次递增它。

class Test {

  public static void main(String[] args) {
    String str="123456";
    StringBuffer sb=new StringBuffer(str);
    int x=0;
    for (int i = 0;i < str.length()-1; i++)
      {
        sb.insert(++x, ",");
        x += 1;
      }
      System.out.println(sb);  
    }

}

实际上发生的事情是,您的 x=0 最初,但随后您在 '++x' 处插入,因此它进入 'x-1'。但是在下一次迭代中,您再次执行“++x”,它将逗号存储在 'x=2' 中,但实际上它应该存储在 'x=3' 中,因为数组的大小增加了。

试试这个。

String str=jTextField1.getText();
StringBuffer sb=new StringBuffer(str);
int x=-1;    
for (int i = 0;i < str.length()-1; i++)
{    
x+=2
sb.insert(x, ",");
}
System.out.println(sb);

您可以使用正则表达式通过非常简单快速的代码实现它:

    String num = "123456789";
    String regex = "(\d)(?=(\d{1})+$)";
    String commaSaperatedNums = num.replaceAll(regex, ",");
    System.out.println( commaSaperatedNums);