【问题标题】:Split an expression to float numbers [closed]将表达式拆分为浮点数 [关闭]
【发布时间】:2014-12-27 18:36:43
【问题描述】:

我有一个这样的字符串"2/-4+5.7*5*-7.9+3" 我想把它拆分成一个数组,这样元素就是浮点数的绝对值[2,4,5.7,5,7.9,3]

【问题讨论】:

  • 我试过 [\\D+] 但它被非数字字符甚至小数点分割
  • 试试[^\\d.]^ 是否定的。
  • 对于未来的问题,您可能需要tour(发布您所做的尝试总是好的,一些代码......)

标签: java regex


【解决方案1】:
"2/-4+5.7*5*-7.9+3".split(/[\/\-\+\*]{1,}/)

结果:[“2”、“4”、“5.7”、“5”、“7.9”、“3”]

此外,您必须 parseFloat() 每个项目以获取数值

【讨论】:

    【解决方案2】:
            String s = "2/-4+5.7*5*-7.9+3";
            Pattern p = Pattern.compile("[+-]?[0-9]+");
            Matcher m = p.matcher(s);
            int n1 = 0;
            int n2 = 0;
    
            while ( m.find() ) {
                n1++;
            }
    
            float[] array = new float[n1];
    
            while ( m.find() && n2 <= n1) {
                array[n2] = Float.parseFloat(s.substring(m.start(), m.end()));
                n2++;
            }
    

    【讨论】:

      【解决方案3】:

      您可以尝试匹配而不是拆分。

      \\d+(?:\\.\\d+)?
      

      DEMO

      根据一个或多个运算符 (-,*,/,+) 输出字符串将为您提供所需的输出。

      String test = "2/-4+5.7*5*-7.9+3";
      System.out.println(Arrays.toString(test.split("[-/+*]+")));
      

      输出:

      [2, 4, 5.7, 5, 7.9, 3]
      

      【讨论】:

        猜你喜欢
        • 2019-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多