如何用点分割字符串,但留下用“未触动”包裹的部分

时间:2017-09-14 14:35:35

标签: java regex

我正在寻找一种通过点分割弦乐的好方法,但不要触摸用重音符号包裹的部分("`")。我不确定是否有正则表达式,所以也欢迎其他方法。

换句话说,我想转换一下:

"a.`b.html`.c.`d.html`"

到此:

["a", "b.html", "c", "d.html"]

1 个答案:

答案 0 :(得分:1)

我会用'字符分割,然后删除前导和尾随点。为此,我使用replaceAll method

String input = "a.`b.html`.c.`d.html`";
String[] values = Arrays.stream(input.split("`"))  //split by the ` 
                                 .map(s -> s.replaceAll("(^\\.|\\.$)", "")) //remove dots
                                 .collect(Collectors.toList())
                                 .toArray(new String[0]);
System.out.println(Arrays.toString(values));

输出:

  

[a,b.html,c,d.html]