【问题标题】:String split limiters字符串拆分限制器
【发布时间】:2014-12-29 13:13:51
【问题描述】:

我是 Java 新手。有一个字符串“a + b - c * d / e”,我想得到a ,b,c,d,e

但它失败了(java.util.regex.PatternSyntaxException)

    String str = "a + b - c * d / e";
    String [] value = str.split("+-*/");

提前致谢。

【问题讨论】:

    标签: java regex split


    【解决方案1】:

    根据以下正则表达式拆分您的输入。

    String str = "a + b - c * d / e";
    String[] value = str.split("\\s*[-+*/]\\s*");
    System.out.println(Arrays.toString(value));
    

    输出:

    [a, b, c, d, e]
    

    \\s* 匹配零个或多个空格。 [-+*/] 匹配给定列表中的单个字符。我建议您将- 放在字符类的开头或结尾,因为- 在字符类的中间有时会起到范围运算符的作用。

    更新:

    如果您希望程序仅返回运算符,请尝试此操作。

        String str = "1.23 + 3 - 5 * 4 / 5.7";
        String[] value = str.split("\\s*\\d+(?:\\.\\d+)?\\s*");
        ArrayList<String> list = new ArrayList<String>();
        for(String s: value){
            if(!s.equals("")) list.add(s);
        }
       System.out.println(list);
    

    输出:

    [+, -, *, /]
    

    【讨论】:

    • 它有效。我在哪里可以找到 string.split 的正则表达式教程?
    • 这个regular-expressions.info 是学习正则表达式的最佳站点。不仅用于拆分,正则表达式还可以完成匹配的工作。
    • 谢谢!如果我想在 "1.23 + 3 - 5 * 4 / 5.7" -> +, - , *, / 中拆分整数或双精度值
    • 使用相同的正则表达式,它会返回[1.23, 3, 5, 4, 5.7]
    • 对不起,它应该拆分 "1.23 + 3 - 5 * 4 / 5.7" -> +, - , * , /
    猜你喜欢
    • 2017-06-30
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 2014-01-12
    • 2020-09-13
    相关资源
    最近更新 更多