java之在未转义的空间拆分

powertoolsteam 阅读:4 2024-04-12 10:01:50 评论:0

我有以下形式的字符串:

/path/ /path\ with\ space/ /another/ 

我需要拆分它,所以我最终得到一个包含以下内容的数组:

[ /path/, /path with space/, /another/ ] 

是否有一个简单的正则表达式可以解决这个问题?以前我使用的是\s+ 但显然它在这里不起作用。

请您参考如下方法:

使用 negative lookbehind .

String s = "/path/ /path\\ with\\ space/ /another/"; 
String[] parts = s.split("(?<!\\\\)\\s+"); 
 
System.out.println(Arrays.toString(parts)); 
// prints [/path/, /path\ with\ space/, /another/] 

请注意,第二个元素仍包含 \,您需要自己将其删除。

for (int i=0; i<parts.length; i++) 
{ 
    parts[i] = parts[i].replaceAll("\\\\ ", " "); 
} 
 
System.out.println(Arrays.toString(parts)); 
// prints [/path/, /path with space/, /another/] 

是的,那是 四个 \,只是为了匹配字符串中的一个。


标签:java
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号