首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拆分空格分隔的字符串,忽略单引号内的空格

拆分空格分隔的字符串,忽略单引号内的空格
EN

Stack Overflow用户
提问于 2019-04-20 09:10:12
回答 1查看 56关注 0票数 0

我的Java输入String str = "aa 2 xx 'b cc dd e' -o se '4-5'"

我希望输出由空格分隔的标记,单引号中的空格除外。因此,输出应该是:

代码语言:javascript
运行
复制
aa
2
xx
'b cc dd e'
-o
se
'4-5'

我可以通过在空格上拆分字符串,然后合并像'b,cc,dd,e‘这样的字符串序列来得到'b cc dd e',但是我想要一个更好的方法,可能是使用一些正则表达式。

EN

回答 1

Stack Overflow用户

发布于 2019-04-20 09:42:53

我认为您可以通过迭代字符串并使用布尔值来检测引号。

尝试使用以下命令:

代码语言:javascript
运行
复制
  public List<String> test(String a){
    final List<String> list = new ArrayList<>();
    boolean quotes = false;
    StringBuilder sb = new StringBuilder();
    for(char c: a.toCharArray()){
        if(quotes){
            if('\'' == c) {
                quotes = false;
                if(!sb.toString().isEmpty()) {
                    list.add(sb.toString());
                }
                sb = new StringBuilder();
            } else {
                sb.append(c);
            }
        }else {
            if (' ' == c) {
                if (!sb.toString().isEmpty()) {
                    list.add(sb.toString());
                    sb = new StringBuilder();
                }
            } else if ('\'' == c) {
                quotes = true;//entra na string do quote

            } else{
                sb.append(c);
            }
        }
    }

    if(!sb.toString().isEmpty()){
        list.add(sb.toString());
    }
    return list;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55769384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档