【问题标题】:Change numbers to letters in a int array and return String in java将 int 数组中的数字更改为字母并在 java 中返回 String
【发布时间】:2020-12-03 17:06:06
【问题描述】:

我有一个带有随机长度和随机整数的int array (b[])。我想保留小于 9 的整数,我想将数字 9-35 更改为字母 A-Z。我想在所有高于35 的数字周围加上()。所以b[] = {1,10,36} 会生成一个String 1A(36)。我的尝试:

int b[] = {99, 2, 3, 4, 5, 10, 35, 24};  //sample input
char[] hilfsarray = new char[b.length];
char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVW".toCharArray();

for (int k = 0; k < hilfsarray.length; k++) //overwrite all positons with *
    hilfsarray[k] = '*';

for (int i = 0; i < b.length; i++) {
    int p = b[0] - 10;
    if (b[i] < 9 && b[i] <= 35) {
        hilfsarray[i] = alphabet[p];
    }
    return Arrays.toString(hilfsarray);
}

【问题讨论】:

    标签: java arrays string numbers alphabet


    【解决方案1】:

    我认为这段代码可以完成你的工作。它使用 Java-8,StreamAPI:

    public String someMethod() {
        int[] items = {99, 2, 3, 4, 5, 10, 35, 24}; // sample input
        String[] alphabet =
                "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z".split(",");
    
        return Arrays.stream(items)
                .mapToObj(item -> (item > 9 && item <= 35) ?
                        alphabet[item - 10] : "(" + item + ")")
                .reduce("", String::concat);
    }
    

    样本输出:

    (99)(2)(3)(4)(5)AZO
    

    【讨论】:

      【解决方案2】:

      您可以将10-35 范围内的数字解释为字符,并将它们的代码点移动55 以获得代码点大写字母65-90:

      public static void main(String[] args) {
          int[] a = {1, 10, 36};
          int[] b = {99, 2, 3, 4, 5, 10, 35, 24};
      
          System.out.println(custom(a)); // 1A(36)
          System.out.println(custom(b)); // (99)2345AZO
      }
      
      public static String custom(int[] arr) {
          return Arrays.stream(arr).mapToObj(i -> {
              if (i > 9 && i < 36)
                  return Character.toString(i + 55);
              else if (i > 35)
                  return "(" + i + ")";
              else
                  return String.valueOf(i);
          }).collect(Collectors.joining());
      }
      

      另见:Replace non ASCII character from string

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-22
        • 1970-01-01
        • 2017-04-11
        • 2014-07-23
        • 1970-01-01
        • 2016-06-22
        • 2012-06-28
        • 1970-01-01
        相关资源
        最近更新 更多