[英]Split a string in Java, but keep the delimiters inside each new string
我似乎找不到这个答案。 我想做的是在Java中拆分一个字符串,但是我想在每个字符串中保留定界符。 例如,如果我有以下字符串:
word1{word2}[word3](word4)"word5"'word6'
新字符串数组必须是这样的:
["word1", "{word2}", "[word3]", "(word4)", "\"word5\"", "\'word6\'"]
如何在正则表达式或其他形式中实现这一目标? 我仍在学习Java正则表达式,因此我尝试了一些操作,例如此处讨论的内容: 如何拆分字符串,但还要保留定界符?
但我没有得到预期的结果。
我有这个定界符:
static public final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))";
然后这个方法:
private String[] splitLine() { return tokenFactor.split(String.format(WITH_DELIMITER, "\\(|\\)|\\[|\\]|\\{|\\}|\"|\'")); }
但是该代码将分隔符拆分为单个字符串,这不是我想要的
谁能帮帮我吗?!! 谢谢!
使用Pattern
和regex
解决方案:
我将单独捕获每个单词,或者捕获String
前后带有一个元素的单词
String str = "word1{word2}[word3](word4)\"word5\"'word6'";
Matcher m = Pattern.compile("(([{\\[(\"']\\w+[}\\])\"'])|(\\w+))").matcher(str);
List<String> matches = new ArrayList<>();
while (m.find())
matches.add(m.group());
String[] matchesArray = matches.toArray(new String[0]);
System.out.println(Arrays.toString(matchesArray));
我给出了将其放入数组的方法,但是您可以停止使用列表
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.