有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为表达式数组拆分字符串

我试图将字符串拆分为一个数字和运算符数组,例如从"2.1+(sin 2)"中获取["2.1" , "+" , "(", "sin" , "2" , ")"]

如何正确解决这个问题?我试图使用java.util.regex.Pattern,但我不知道如何提取所有合适的元素


共 (1) 个答案

  1. # 1 楼答案

    你可以做匹配或分割。这里有一个通过分裂

    String s = "2.1+(sin 2)";
    String parts[] = s.split("\\s+|(?=[^.\\w\\s])|(?<=[^.\\w\\s])");
    System.out.println(Arrays.toString(parts));
    

    通过使用模式和匹配器类进行匹配

    String s = "2.1+(sin 2)";
    ArrayList<String> lst = new ArrayList<String>(); 
    Matcher m = Pattern.compile("\\d+(?:\\.\\d+)?|[a-zA-Z]+|[^\\s\\w\\.]").matcher(s);
    while(m.find())
    {
        lst.add(m.group());
    }
    System.out.println(lst);
    

    输出:

    [2.1, +, (, sin, 2, )]