首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何除了java中的撇号和引号之外的拆分空格?

如何除了java中的撇号和引号之外的拆分空格?
EN

Stack Overflow用户
提问于 2018-10-25 01:53:25
回答 1查看 0关注 0票数 0
  1. 拆分字符串没有任何空格。
  2. 除此之外,如果它被“”或“”包围,它可以有空格,并且“/”应该被删除。

到目前为止,这些结果最接近我的试验答案。

代码语言:javascript
复制
public class Parsing
{
  public static void main(String[] args)
  {
    String a = "   mkdir     \"ab cd\"  'ab cd'  ab cd    "; // In fact, this string comes from user input.
    System.out.println(a);
    String a1[] = a.split("[ ]+");
    for (int i = 0; i < a1.length; i++) {
      System.out.println(a1[i]); \\ This violate condition 2.
    }

    List<String> list = new ArrayList<String>();
    Matcher m = Pattern.compile("([^']\\S*|'.+?')\\s*").matcher(a);
    while (m.find())
        list.add(m.group(1).replace("'", ""));
    System.out.println(list); \\ This prints [ , mkdir, "ab, cd", ab cd, ab, cd]. 
    // I don't want the first element, also "ab, cd" should be ab cd.

    List<String> list2 = new ArrayList<String>();
    Matcher p = Pattern.compile("([^\"]\\S*|\".+?\")\\s*").matcher(a);
    while (p.find())
        list2.add(p.group(1).replace("\"", ""));
    System.out.println(list2); \\ This prints [ , mkdir, , ab cd, 'ab, cd', ab, cd]. 
    // I don't want the first element(white space?), also 'ab, cd' should be ab cd.
  }
}
EN

回答 1

Stack Overflow用户

发布于 2018-10-25 11:19:49

这个怎么样

代码语言:javascript
复制
String a = "   mkdir     \"ab cd\"  'ab cd'  ab cd    "; 
String out = a.trim().replaceAll("\\s+", " ");

List<String> list = new ArrayList<String>();
Matcher m = Pattern.compile("([^\"]\\S*|\".+?\")\\s*").matcher(out);
while (m.find())
    list.add(m.group(1)); 


System.out.println(list);

在Java中的空格上几乎是一个Split字符串,除非在引号之间(即将\“hello world \”作为一个标记)

输出

代码语言:javascript
复制
[mkdir, "ab cd", 'ab, cd', ab, cd
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002980

复制
相关文章

相似问题

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