use*_*592 5 java regex string java-8 java-stream
我有一个字符串
"Red apple, blue banana, orange".
Run Code Online (Sandbox Code Playgroud)
我怎么能先用“,”分割它,然后在两个词之间添加“_”(例如 Red_apple 但不是橙色)并将所有字母大写。我阅读了一些帖子并找到了一个解决方案,但它只有拆分部分,我如何还添加“_”并将所有字母大写?:
Pattern pattern = Pattern.compile(", ");
List<Fruit> f = pattern.splitAsStream(fruitString)
.map(Fruit::valueOf)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
Fruit 是一个枚举对象。所以基本上,如果我能够将字符串转换为某种格式,并且我能够根据 Enum 名称获取 Enum 对象。
使用map(...)方法对原始进行转换String。不要Fruit::valueOf通过方法引用进行调用,而是在 内部的空格上分割每个字符串map(...),并在恰好获得两个部分时构造一个组合字符串:
List<Fruit> f = pattern.splitAsStream("Red apple, blue banana, orange")
.map(s -> {
String[] parts = s.split(" ");
String tmp = parts.length == 2
? parts[0]+"_"+parts[1]
: s;
return Fruit.valueOf(tmp.toUpperCase());
}).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
如果需要对结果执行任何其他转换,可以在该return语句之前的同一 lambda 代码块中执行这些转换。
| 归档时间: |
|
| 查看次数: |
4181 次 |
| 最近记录: |