将ascii数字串转换为字母串的更简单方法是什么?

时间:2015-09-18 06:57:26

标签: java arrays string char

所以我有字符串" 116,101,115,116,49,50,51,52"我想将它从ASCII小数转换为ASCII字母。这是我用来做的代码:

    String charInts = "116,101,115,116,49,50,51,52";
    String[] tokenizedCharInts = charInts.split(",");
    String phrase = "";
    for (int i = 0; i < tokenizedCharInts.length; i++) {
        int digit = Integer.parseInt(tokenizedCharInts[i]);
        phrase += (char) digit;
    }
    System.out.println(phrase);

它有效,所以我对它很满意,但我想知道是否有人知道更优雅的方式来做这件事,也许不使用for循环(必须将每个分割字符串转换为int,然后是一个char,然后附加它,对于每个小的子字符串,让我觉得他们必须是一个更清洁的解决方案。)

6 个答案:

答案 0 :(得分:0)

可能使用StringBuilder和其他for? :

 String charInts = "116,101,115,116,49,50,51,52";
 String[] tokenizedCharInts = charInts.split(",");
 StringBuilder phrase = new StringBuilder();
 for (String a : tokenizedCharInts) {
        phrase.append((char)Integer
                .parseInt(a));
    }
System.out.println(phrase);

答案 1 :(得分:0)

您可以使用增强型for循环,因为您不需要数组元素索引。

您应该使用StringBuilder来累积字符串而不是String phrase,以避免重复的字符串构造。

答案 2 :(得分:0)

您可以使用ScannerStringBuilder组合:(不需要拆分字符串并循环它。)

      String charInts = "116,101,115,116,49,50,51,52";
      Scanner scanner=new Scanner(charInts);
      scanner.useDelimiter(",");
      StringBuilder sb=new StringBuilder();

      while (scanner.hasNextInt()) {
        sb.append((char)scanner.nextInt());
      }
     scanner.close();
     System.out.println(sb.toString());

答案 3 :(得分:0)

Java-8解决方案:

String charInts = "116,101,115,116,49,50,51,52";
String phrase = Arrays.stream(charInts.split(",")).mapToInt(Integer::parseInt)
    .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append)
    .toString();
System.out.println(phrase);

答案 4 :(得分:0)

IF 这适合您的用例:

char[] charInts = new char[] { 116,101,115,116,49,50,51,52 };
String s = new String(charInts);

答案 5 :(得分:0)

是的,Java使用Streams API提供了一个优雅的单行解决方案。

String charInts = "116,101,115,116,49,50,51,52";
StringBuilder sb = new StringBuilder();
Arrays.stream(charInts.split(","))
    .map(Integer::parseInt)
    .map(Character::toChars)
    .forEach(sb::append);
System.out.println(sb.toString());