【发布时间】:2019-10-13 14:45:11
【问题描述】:
我有一个 Unicode 字符列表,需要用其他一些字符替换,我已经让它工作了。但是,我必须循环两次才能得到 结果。是否可以只循环一次并得到结果?
比如我想把这个“\u201C”、“\u201D”换成“\””(智能双引号和标准双引号) 并将“\u2018”、“\u2019”替换为“'”(智能单引号与标准单引号)
public class HelloWorld{
public static void main(String []args){
List<String> toRemove = Arrays.asList("\u201C","\u201D");
List<String> toRemove1 = Arrays.asList("\u2018","\u2019");
String text = "KURT’X45T”YUZXC";
text=toRemove.stream()
.map(toRem -> (Function<String,String>) s -> s.replaceAll(toRem, "\""))
.reduce(Function.identity(), Function::andThen)
.apply(text);
System.out.println("---text--- "+ text);
text=toRemove1.stream()
.map(toRem -> (Function<String,String>) s -> s.replaceAll(toRem, "'"))
.reduce(Function.identity(), Function::andThen)
.apply(text);
System.out.println("---text-1-- "+ text);
}
}
【问题讨论】:
标签: java java-8 java-stream