我想用字符串分割以下字符串
String ToSplit = "(2*(sqrt 9))/5";
插入以下字符串数组:
String[] Splitted = {"(", "2", "*", "(", "sqrt", "9", ")", ")", "/", "5"};
为此,我使用:
String[] Splitted = ToSplit.split("(?<=[^\\w\\s])(?=\\w)|(?<=\\w)(?=[^\\w\\s])|(?<=[^\\w\\s])(?=[^\\w\\s])|\\s+");
它非常完美,但是,在其他测试中,它包含了双精度的情况,例如
String toSplit = " 2*sqrt(3.0) ";
我想用这种方式分割它:
String[] Splitted = {"2", "*", "sqrt", "(", "3.0", ")"};
但是它出来了
String[] Splitted = {"2", "*", "sqrt", "(", "3", ".", "0", ")"};
因此,如您所见,尽管只有元素“ 3.0”,但我还是得到了三个元素{“ 3”,“。”,“ 0”}
我该如何解决这个问题?
谢谢。
答案 0 :(得分:0)
作为一种选择,您可以连接所需的元素(这只是示例代码,我没有对其进行测试):
String[] splitted = {"2", "*", "sqrt", "(", "3", ".", "0", ")"};
List<String> a = new ArrayList<>();
for (int i = 0; i < splitted.length(); i++) {
if (splitted[i].equals(".") && i > 0 && i < splitted.length() - 1) {
a.set(a.size() - 1, a.get(i - 1) + "." + splitted[i + 1]);
i+=2;
} else {
a.add(splitted[i]);
}
}
//The elements you need are on the 'a' list.
但是我建议您听从约翰·布林格的建议。编写自己的简单解析器以拆分输入String。那并不难。