拆分字符串并计算2个子串的功效

时间:2013-10-09 13:31:16

标签: java math split

我的输入字符串如下"10^-9"。由于Java不处理求幂,而"^"代表按位异或,我尝试以不同方式执行。我在10和-9中拆分了String并将其解析为double,然后使用Math.pow()来获取它的值。代码如下所示:

String[] relFactorA = vA.getValue().split("^"); //vA.getValue is a String like `"10^-9"` or any other number instead of 9.
Double pow1 = Double.parseDouble(relFactorA[0]);
Double pow2 = Double.parseDouble(relFactorA[1]);
Double relFactor = Math.pow(pow1, pow2);
System.out.println(relFactor);

但是这种方法会导致java.lang.NumberFormatException。在代码中我找不到错误,我是否做错了或编译器将“ - (减号)”识别为“ - (连字符)”,但我不认为这是原因,因为两个字符串看起来都是一样的编译器应该看到这个。

3 个答案:

答案 0 :(得分:3)

您可能没有在^上拆分,因为split使用正则表达式作为参数,而正则表达式^具有特殊含义(它的行首)。要使其文字使用"\\^"

答案 1 :(得分:3)

String.split()使用正则表达式作为参数。如果您要分割符号^,请使用\\^

String[] relFactorA = vA.getValue().split("\\^");

答案 2 :(得分:3)

请注意,String#split需要正则表达式而不是字符串:

  

public String [] split(String regex

你应该逃避special character ^

vA.getValue().split("\\^");

转义正则表达式通常由\完成,但在Java中,\表示为\\

相反,您可以使用Pattern#quote^视为字符串 ^而不是元字符^:< / p>

  

返回指定String的文字模式String

vA.getValue().split(Patter.quote("^"));

相关问题