我有一个数组列表
List<String> items = Arrays.asList("date=2017-01-10", "date=2017-02-10");
我想转换此列表,并为列表中的每个项目添加引号
date=2017-01-10
可以转换为date='2017-01-10'
List<String> items = Arrays.asList("date='2017-01-10'", "date='2017-02-10'");
我如何在Java 8中完成?
更新:我想使用正则表达式来实现这一点。
答案 0 :(得分:2)
我看过你的个人资料,我发现你开始使用Java。所以我只是为了学习目的而给你答案。
(?<==)
(.+)
使用$
符号来引用捕获的组,例如:$1
。
List<String> result = items.stream()
// match `=` ---v
.map(it -> it.replaceFirst("(?<==)(.+)", "'$1'"))
// capture the rest substring in group ---^
.collect(Collectors.toList());
您也可以使用String#substring来实现自己的方式。例如:
int prefix = "date=".length();
List<String> result =items.stream()
.map(it->String.format("date='%s'",it.substring(prefix)))
.collect(Collectors.toList());
答案 1 :(得分:2)
您可以将replaceAll
与此正则表达式^(.*?)=(.*?)$
一起使用,后面的=
之后返回两个组,因此您可以将组1 $1
替换为输入通过='
然后在两个引号'$2'
之间的第2组:
List<String> items = Arrays.asList("date=2017-01-10", "date=2017-02-10");
items = items.stream()
.map(t -> t.replaceAll("(.*?)=(.*?)$", "$1='$2'"))
.collect(Collectors.toList());
items.forEach(System.out::println);
<强>输出强>
date='2017-01-10'
date='2017-02-10'
答案 2 :(得分:0)
您可以使用以下代码
List<String> items = Arrays.asList("date=2017-01-10", "date=2017-02-10"), result = new ArrayList<String>();
for(String item : items){
item = item.replace("date=", "date='");
item = item + "'";
result.add(item);
}
for(String item : result){
System.out.println(item);
}