【问题标题】:How to add 0 in front of every single digit string?如何在每个数字字符串前面添加 0?
【发布时间】:2017-05-13 19:03:28
【问题描述】:

如何在每个数字前添加 0?我的意思是 1 到 01 等。 我试图添加像

这样的 ifs
if(c >='A' && c<= 'I')
    str = "0"+str;

但它只是在 abcd 转换为 00001234 而不是 01020304 之类的所有内容前面添加 0。

这是我的代码。

    String A[] = new String[size];
    for (int i = 0; i < size; i++) {
        A[i] = jList1.getModel().getElementAt(i);
        String[] Text = A[i].split("");
        String s = jList1.getModel().getElementAt(i);
        String str = ("");
        for (int z = 0; z < Text.length; z++) {
            for (int y = 0; y < Text[z].length(); y = y + 1) {
                char c = s.charAt(z);
                if (c >= 'A' && c <= 'Z') {
                    str += c - 'A' + 1;

                } else if (c >= 'a' && c <= 'z') {
                    str += c - 'a' + 1;

                } else {
                    str += c;
                }
            }
            str = str + "";
        }
    }

【问题讨论】:

标签: java string char jframe


【解决方案1】:

一种方法是在 Java 8 中使用 StringJoiner

String s = "abcdABCD";

s = s.chars()
     .mapToObj(i -> Integer.toString((i >= 'a' && i <= 'z' ? i - 'a' : i - 'A') + 1))
     .collect(Collectors.joining("0", "0", "")));

System.out.println(s);

>> 0102030401020304

【讨论】:

    【解决方案2】:
        String str = "abcd-zzz-AAA";
    
        StringBuilder sb = new StringBuilder();
    
        for (int i = 0; i < str.length(); i++) {
            char ch = str.toLowerCase().charAt(i);
            if (ch >= 'a' && ch <= 'z') {
                sb.append('0');
                sb.append(ch - 'a' + 1);
            } else {
                sb.append(ch);
            }
        }
    

    结果:abcd-zzz-AAA -> 01020304-026026026-010101

    最终修复:-)

    【讨论】:

    • 我需要例如字母 abcd 转换为 01020304。
    【解决方案3】:

    使用String#chars 获取其字符流,然后对每个字符进行您想要的操作。

    public class Example {
    
        public static void main(String[] args) {
            String s = "aBcd1xYz";
            s.chars().forEach(c -> {
                if (c >= 'a' && c <= 'z')
                    System.out.print("0" + (c - 'a' + 1));
                else if (c >= 'A' && c <= 'Z')
                    System.out.print("0" + (c - 'A' + 1));
                else
                    System.out.print(c);
            });
        }
    }
    

    输出:

    0102030449024025026

    【讨论】:

      【解决方案4】:

      这对我有用

      public String addZero(int number)
      {
          return number<=9?"0"+number:String.valueOf(number);
      }``
      

      【讨论】:

        【解决方案5】:

        您可以使用 String.format 在单个数字前面添加零。

        System.out.println(String.format("%02d",1));
        System.out.println(String.format("%02d",999));
        

        第一行将打印 01,第二行打印 999,左侧没有零填充。

        补零,长度为2,d代表整数。

        我希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 2015-12-03
          • 2023-03-03
          • 1970-01-01
          • 2015-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-08
          • 2011-09-12
          相关资源
          最近更新 更多