2017-09-14 50 views
-5

我正在寻找一种很好的方法来按点分割字符串,但不要触及用重音符号(”`“)包裹的部分。我不确定是否有正则表达式来做,所以其他方法也是受欢迎的。如何按点分割字符串,但用“`原封不动地保留零件

换句话说,我想转换此:

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

这样:

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

分裂由' “'”'然后检查字符串看起来是“string.string”还是“string.”或“.string.”。对于第一个示例,请勿删除这些点,但请为其余部分执行 – XtremeBaumer

+1

您尝试过任何操作吗? – tnw

+1

如果没有转义,请使用:https://regex101.com/r/LyOtjY/1 – anubhava

回答

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]

+0

当字符串不包含任何'''时它不起作用。我没有在我的问题中提到它,但该字符串也可以是“a.b.c.d”,并且也应该正确拆分。不管怎么说,还是要谢谢你。 – akn