我想在文本字段中键入“sin(35)”,但为了计算它,我必须将每个运算符和数字与空格分开,因为我使用了.split(“”),如何将分隔符设置为是数字或运算符后面的空字符串,所以它不能接受空格?
pseudocode: infix.split("" after sin | "" after [()+-*^])
答案 0 :(得分:2)
如果您只是尝试使用split来获取公式参数,则可以改为使用Pattern和Matcher类,如下所示:
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+)\)
答案 1 :(得分:1)
您只需要一行来提取每个部分:
String function = input.replaceAll("\\(.*", "");
String parameter = input.replaceAll(".*\\(|\\).*", "");