您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java-如何拆分字符串,但还要保留定界符?

Java-如何拆分字符串,但还要保留定界符?

你可以使用LookaheadLookbehind。像这样:

System.out.println(Arrays.toString("a;b;c;d".split("(?<=;)")));
System.out.println(Arrays.toString("a;b;c;d".split("(?=;)")));
System.out.println(Arrays.toString("a;b;c;d".split("((?<=;)|(?=;))")));

你将获得:

[a;, b;, c;, d]
[a, ;b, ;c, ;d]
[a, ;, b, ;, c, ;, d]

最后一个是你想要的。

((?<=;)|(?=;))等于选择之前;或之后的空字符;。

希望这可以帮助。

编辑 Fabian Steeg对可读性的评论有效。可读性始终是RegEx的问题。一件事,我要做的是缓解这种情况,即创建一个变量,该变量的名称代表正则表达式的作用,并使用Java String格式来帮助实现这一点。像这样:

static public final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))";
...
public void someMethod() {
...
final String[] aEach = "a;b;c;d".split(String.format(WITH_DELIMITER, ";"));
...
}
...
java 2022/1/1 18:21:50 有522人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶