在使用字符串标记生成器读取分数时,如何忽略括号?

时间:2014-03-10 22:08:24

标签: java stringtokenizer

public Fraction (String fractionString)
{
  StringTokenizer st = new StringTokenizer(fractionString, "/");
  numerator = Integer.parseInt(st.nextToken());
  denominator = Integer.parseInt(st.nextToken());
}

到目前为止,我有这个。如何更改此项以忽略分数中的括号?

示例:(3/4) - 如何忽略这些括号?

看着这个我就可以做到     StringTokenizer st = new StringTokenizer(fractionString,“/()”?

2 个答案:

答案 0 :(得分:2)

忽略()+-*/等符号的一种方法是使用StringTokenizer的重载构造函数之一。

StringTokenizer st = new StringTokenizer(fractionString, "()", false);

第三个参数的boolean表示标记生成器是否将给定的分隔符(在本例中为括号)放入标记本身(true),或者在标记其余部分时跳过它们。字符串(false)。

答案 1 :(得分:1)

您可以使用.replace(char oldChar,char newChar)

public Fraction (String fractionString)
{   
    fractionString = fractionString.replace("(","");
    fractionString = fractionString.replace(")","");
    StringTokenizer st = new StringTokenizer(fractionString, "/");
    numerator = Integer.parseInt(st.nextToken());
    denominator = Integer.parseInt(st.nextToken());
}

代码输出:

(3/4)
numerator: 3    denominator: 4

或者,您可以按如下方式使用.split(String regex)

String[] split = fractionString.split("[()/]");
numerator = Integer.parseInt(split[0]);
denominator = Integer.parseInt(split[1]);