【问题标题】:setting all elements of string array to one fixed length [duplicate]将字符串数组的所有元素设置为一个固定长度[重复]
【发布时间】:2016-09-28 20:33:00
【问题描述】:

我有一个类似的字符串

String[] 浇头 = {"1234", "56789", "123456"};

我需要检查浇头的每个元素的长度,如果小于 9,我需要在末尾添加零。

例如考虑数组的第一个元素,它是 1234。 它的长度是 4,所以我需要在末尾添加 5 个零,看起来像“123400000”。

同样,我需要对浇头中存在的所有元素进行此操作。

最后,我需要将浇头中存在的所有 vales 连接到一个字符串。意味着我的输出必须看起来像 字符串 x = "123400000567890000123456000"。

有什么建议吗?

谢谢,

【问题讨论】:

  • 有什么建议吗?是的Java代码。谷歌“Java 字符串填充”
  • @ScaryWombat:不过,在这种情况下,左右之间的差异似乎很重要。

标签: java arrays string append


【解决方案1】:

您可以使用.length() 获取长度,然后在字符串中添加“0”直到达到9。

String[] toppings = {"1234", "56789", "123456"};

for (int q = 0; q < toppings.length; q++){

    int length = toppings[q].length(); // # of digits
    int maxlength = 9;

    if (length<maxlength){ // only do this if it is below 9
        for (int i = length; i < maxlength; i++){ // go through and add 0's
            toppings[q] = toppings[q] + "0";
        }
    }
}

String mix = "";
for (int q = 0; q < toppings.length; q++){ // add all the strings to one single string
    mix+=toppings[q];
}

System.out.println(mix);

返回:

123400000567890000123456000

【讨论】:

    【解决方案2】:

    试试这个。

    String x = Arrays.stream(toppings)
        .map(s -> String.format("%-9s", s))
        .collect(Collectors.joining())
        .replaceAll(" ", "0");
    

    【讨论】:

      【解决方案3】:

      遍历所有项目,右垫然后打印它们。在 Java 8 中:

      toppings.stream.map(s -> String.format("%-09d", s)).collect(Collectors.joining());
      
      //        ^                        ^                                ^
      // Use the stream API       Right-pad with 0       Munge them all into a single string.
      

      【讨论】:

      • 感谢您的回答,对我来说效果很好。我对 lamda 运算符一无所知,通过查看您的帖子,我了解了如何使用它们。非常感谢
      猜你喜欢
      • 1970-01-01
      • 2014-04-12
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2012-05-28
      相关资源
      最近更新 更多