首页 > Java > java教程 > 如何按空格分割字符串,忽略引号内的空格?

如何按空格分割字符串,忽略引号内的空格?

Mary-Kate Olsen
发布: 2024-12-16 02:07:09
原创
655 人浏览过

How to Split a String by Spaces, Ignoring Spaces Within Quotes?

使用未用引号括起来的空格分割字符串

在这种情况下,我们寻求一种解决方案,使用以下空格将字符串分成多个组件不包含在单引号或双引号中。这是一项细致入微的任务,需要仔细制作正则表达式。

一个有效的解决方案涉及构建一个捕获两种类型元素的正则表达式:

  1. 引用的字符串: 序列用单引号或双引号括起来的字符,没有内部引号。
  2. 未加引号的单词: 不包含空格或引号的字符序列。

要匹配这些元素,我们可以使用以下正则表达式:

[^\s"']+|"([^"]*)"|'([^']*)'
登录后复制

在此regex:

  • [^\s"'] :匹配不带引号的单词。
  • |"([^"]*)"|:匹配双引号字符串,不包括引号.
  • |'([^']*)'|:匹配单引号字符串,不包括

在 Java 中实现此解决方案,我们可以使用以下代码:

Pattern regex = Pattern.compile("[^\s\"']+|\"([^\"]*)\"|'([^']*)'");
Matcher regexMatcher = regex.matcher(subjectString);

List<String> matchList = new ArrayList<>();
while (regexMatcher.find()) {
    if (regexMatcher.group(1) != null) {
        // Double-quoted string without quotes
        matchList.add(regexMatcher.group(1));
    } else if (regexMatcher.group(2) != null) {
        // Single-quoted string without quotes
        matchList.add(regexMatcher.group(2));
    } else {
        // Unquoted word
        matchList.add(regexMatcher.group());
    }
}
登录后复制

这种方法巧妙地捕获两种类型的元素,为给定问题提供了可靠的解决方案.

以上是如何按空格分割字符串,忽略引号内的空格?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板