所以我有字符串" 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,然后附加它,对于每个小的子字符串,让我觉得他们必须是一个更清洁的解决方案。)
答案 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)
您可以使用Scanner
和StringBuilder
组合:(不需要拆分字符串并循环它。)
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());