解析&替换字符串

时间:2015-11-03 00:12:38

标签: java parsing

像这样的问题已得到解答,但没有一个帮助我理解并决定在我的案例中做到这一点的最佳方式。

这个想法:

Input: 15k+5b-1m
Ouput: 15000+5000000000-1000000

基本上将k替换1,000 - m 1,000,000,将b替换为1,000,000,000,并将其乘以它所附加的值。

我以为我会这样做:

Using 2 StringTokenizer, one to parse math signs +,-,*,/ and one to parse
letter k,m,b that I call on every element the first parser got.

因此,如果我们应用我的例子中的算法:

Str Input = 15k+5b-1m
StringTokenizer math_token= new StringTokenizer(source, Input);
while (math_token.hasMoreTokens())
        {
            while(math_token.hasMoreElements())
            {
                 Str token_value = math_token.nextElement();
                 parse_letters(token_value) and change values...
            }
            math_token.nextToken();
            format stuff for the final string
        }

所以它就像:

15k -> 15 -> 15000

1 个答案:

答案 0 :(得分:0)

如果我理解了您的问题,那么您可以用九个零b替换m六个零和k三个零。此外,按照惯例,Java变量名称以小写字母开头。像,

String input = "15k+5b-1m";
input = input.replace("b", "000000000").replace("m", "000000")
        .replace("k", "000");
System.out.println(input);

输出(按要求)

15000+5000000000-1000000