如何将多个数字放入字符串中,而不考虑 String.format 的数字

How to put multiple numbers into string regardless of the number for String.format

提问人:jimi1206 提问时间:9/7/2023 更新时间:9/7/2023 访问量:46

问:

我想创建一个句子,插入一些数字,例如“您的标签编号是 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())));
Java 字符串格式

评论

0赞 Chaosfire 9/7/2023
您的方法的实际问题是什么 - 不正确的结果、编译错误等?和从何而来?Lists.transformFunctions.toStringFunction
0赞 Arvind Kumar Avinash 9/7/2023
Arrays.asList(1, 2, 3, 4).stream().map(String::valueOf).collect(Collectors.joining(",")

答:

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.