java - Java中如何在字符串中插入字符

标签 java stringbuffer

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

 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);

最佳答案

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

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

关于java - Java中如何在字符串中插入字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28791167/

相关文章:

java - "&minus"而不是 TextView 中的 "-",它从 JSON 设置文本

java - PDFBox : PDPageContentStream's append mode misbehaving

java - JDBC 和 MySQL 的编码问题

java - 更新 JLabel 以显示贪吃蛇游戏的当前得分

java - 我该如何解决这个 java.lang.OutOfMemoryError : Java heap space?

java - 从 Java 生成的 CSV 文件添加了不需要的问号 (?)

java - 字符串构建器如何管理对单个对象的多线程访问和可变性?

java - 为计时器创建 ActionListener

java - 为什么String和StringBuilder/StringBuffer有不同的方法集?

java - 就 StringBuilder 和 StringBuffer 类而言,同步意味着什么?