读取字符串并从中获取数字;

时间:2014-12-18 14:54:19

标签: java string equation

我想解析String中的数字。

示例输入字符串:0 = 2*x+2*x^2-4

转换为:

leftside = 0

rightside = 2*x,2*x^2,-4

最后,我想将数字保存在leftN = 0rightX = 2

等变量中

如何做到这一点?任何提示?

3 个答案:

答案 0 :(得分:2)

首先,您可以使用方法split()将字符串拆分为两个LHS和RHS 方法签名看起来像这样,

 public String[] split(String regex, int limit) //limit: maximum strings splited

public String[] split(String regex)

简单的例子也许,

String[] str_array = "0 = 2*x+2*x^2-4".split(" = ");
String LHS = str_array[0]; 
String RHS = str_array[1];

通过与elements[]-分开,进一步分割RHS字符串并将其设为+,这样您就可以进一步划分并获得RHS作为条款。

将数字设为int你可以使用,

try{
   Integer.parseInt(elements[i]);
}catch(NumberFormatException e){
   parsable = false;
}

答案 1 :(得分:0)

将您想要的字符串拆分为不同的字符串

String[] s = display.split("=");

答案 2 :(得分:0)

如果您想要检索0和2的值,可以进一步使用split()方法检索确切的值:

String display = "0 = 2*x+2*x^2-4";
int leftN = Integer.parseInt(display.split("=")[0].trim());
int rightX = Integer.parseInt(display.split("=")[1].trim().split("\\*")[0].trim());
System.out.println(leftN + ", " + rightX);
//output: 0, 2

第一行从=处的分割中检索第一个值。 第二行从=处的拆分中检索第二个值,然后拆分*的所有情况。它从该分割中检索第一个值。 trim()是为了确保没有空格,这会产生NumberFormatException

但是,如果您不希望值为int值:

String display = "0 = 2*x+2*x^2-4";
String leftN = (display.split("=")[0].trim();
String rightX = display.split("=")[1].trim().split("\\*")[0].trim();
System.out.println(leftN + ", " + rightX);
//output: 0, 2

此外,如果您想抓住等式2部分的x^2

String rightX = display.split("\\^")[1].trim().split("-")[0].trim();