如何在 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);
在我的应用程序中,用户会 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);