【问题标题】:Parse words separate by |解析由 | 分隔的单词
【发布时间】:2018-05-24 13:36:01
【问题描述】:

我有一个字符串#JSGF V1.0;grammar numbers;public <accion> = (one| two| three); 我想要数字:一、二和三。

我做了这个String answer = res.substring(res.indexOf("(")+1,res.indexOf(")"));并获得了one| two| three,但这部分我遇到了麻烦。

想法?

【问题讨论】:

  • 获取您的字符串 answer 并在其上使用正则表达式。
  • 你是说answer.split("\\s*\\|\\s*")
  • 使用匹配器和\((.*?\|)+\)

标签: java regex parsing grammar


【解决方案1】:

您可以使用数组获取数字

String numbers[] = answer.split("\\s*\\|\\s*");

\\s*\\|\\s*:0 个或多个空格,然后是 | 符号和 0 个或多个空格

【讨论】:

    【解决方案2】:

    在非单词字符上拆分answer

    public static void main(String[] args) {
        String res = "JSGF V1.0;grammar numbers;public <accion> = (one| two| three);";
        String answer = res.substring(res.indexOf("(") + 1, res.indexOf(")"));
        String[] numbers = answer.split("[^\\w]+"); // split on non-word character
        for (String number : numbers) {
            System.out.println(number);
        }
    }
    

    输出:

    one
    two
    three
    

    【讨论】:

      【解决方案3】:
      String res = "(one| two| three);";
      String answer = res.substring(res.indexOf("(")+1,res.indexOf(")"));
      for(String str : answer.split("\\s*\\|\\s*")) {
          System.out.println(str);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-10
        • 1970-01-01
        • 2014-06-24
        相关资源
        最近更新 更多