提问人:jimi1206 提问时间:9/7/2023 更新时间:9/7/2023 访问量:46
如何将多个数字放入字符串中,而不考虑 String.format 的数字
How to put multiple numbers into string regardless of the number for String.format
问:
我想创建一个句子,插入一些数字,例如“您的标签编号是 1、2、3” 数字的数量因输入而异,例如 (1,2,3) 或 (1,2,3,4)。它如何灵活地创建 sentece,而不管数字的可变数量如何?我以为使用 String.format 和 String.join 可以解决这个问题,但我碰壁了。所以如果你能帮助我,我将不胜感激。
//input example 1
List<Integer> numbers = Arrays.asList(1, 2, 3);
//input example 2
List<Integer> numbers = Arrays.asList(1, 2, 3,4);
String.format("Your tag numbers are %s",
String.join(",", Lists.transform(numbers, Functions.toStringFunction())));
答:
0赞
Marco F.
9/7/2023
#1
您可以使用函数:List.toString
List<Integer> numbers2 = Arrays.asList(1, 2, 3,4);
String s = numbers1.toString(); //"[1, 2, 3, 4]"
s = s.substring(1, s.length()-1); //"1, 2, 3, 4"
System.out.println(s);
1, 2, 3, 4
0赞
WJS
9/7/2023
#2
使用正则表达式,可以从 List 的输出中消除不需要的字符。toString()
[\\[\\]]
字符类。在括号前面加上 since 是正则表达式特殊字符,必须进行转义。\\
[]
List<Integer> numbers1 = Arrays.asList(1, 2, 3);
List<Integer> numbers2 = Arrays.asList(1, 2, 3,4);
String regex = "[\\[\\]]";
System.out.printf("Your tag numbers are %s.%n", numbers1.toString().replaceAll(regex,""));
System.out.printf("Your tag numbers are %s.%n", numbers2.toString().replaceAll(regex,""));
指纹
Your tag numbers are 1, 2, 3.
Your tag numbers are 1, 2, 3, 4.
评论
Lists.transform
Functions.toStringFunction
Arrays.asList(1, 2, 3, 4).stream().map(String::valueOf).collect(Collectors.joining(",")