我想通过以下方式获得大写字母:
"My Name Is".chars()
.filter(c-> c > 64 && c < 97 )
.collect(<??>);
我不确定我应该传递给collect()方法以获取字符列表或字符串。
我的目标是解析字符串并获取另一个只有大写字母
的字符串这很好用:
StringBuilder abbr=new StringBuilder();
"My Name Is".chars()
.filter(c -> c > 64 && c < 97)
.forEach(c->abbr.append(Character.toChars(c)));
是否可以使用更好/更短的方式的collect()构造?
答案 0 :(得分:2)
String result =
"My Name Is".chars()
.filter(c -> c > 64 && c < 97)
.collect(StringBuilder::new,
(sb, c) -> sb.append((char) c),
(sb1, sb2) -> sb1.append(sb2.toString()))
.toString();
答案 1 :(得分:2)
您可以使用Collectors.joining("")
。
String upper = "My Name Is".chars()
.filter(Character::isUpperCase)
.mapToObj(c -> Character.toString((char)c))
.collect(Collectors.joining());
请注意,我也使用Character.isUpperCase
。