我想字符串分开以下字符串
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"}
如何解决此问题?
预先感谢。
作为一个选项,您可以将所需的元素串联(这只是示例代码,我没有测试):
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.
但我建议您遵循约翰·布林(John Bollinger)的建议。编写自己的简单解析器以拆分输入字符串。那并不难。