如何在单词后标记空字符串

时间:2014-03-31 04:33:16

标签: java token

我想在文本字段中键入“sin(35)”,但为了计算它,我必须将每个运算符和数字与空格分开,因为我使用了.split(“”),如何将分隔符设置为是数字或运算符后面的空字符串,所以它不能接受空格?

pseudocode: infix.split("" after sin | "" after [()+-*^])

2 个答案:

答案 0 :(得分:2)

如果您只是尝试使用split来获取公式参数,则可以改为使用PatternMatcher类,如下所示:

String function = "";
int parameter = 0;
Pattern pattern = Pattern.compile("(sin)\\((\\d+)\\)"); // Compile the regex pattern.
Matcher matcher = pattern.matcher("sin(35)");           // Instantiate a pattern Matcher to search the string.
while (matcher.find()) {                                // For every match...
    function = matcher.group(1);                        // Get group `$1`.
    String s = matcher.group(2);                        // Get group `$2`.
    parameter = Integer.parseInt(s);                    // Parse to int, throws `NumberFormatException` if $2 is not a number.
}
System.out.println(function);                           // Prints "sin".
System.out.println(parameter);                          // Prints 35.

正则表达式:

(sin)\((\d+)\)

Regular expression visualization

答案 1 :(得分:1)

您只需要一行来提取每个部分:

String function = input.replaceAll("\\(.*", "");
String parameter = input.replaceAll(".*\\(|\\).*", "");