我试图将字符串拆分为数字和运算符数组,例如从["2.1" , "+" , "(", "sin" , "2" , ")"]
获取"2.1+(sin 2)"
。
如何正确解决这个问题?我尝试使用java.util.regex.Pattern
,但我不知道如何提取所有合适的元素。
答案 0 :(得分:0)
您可以进行匹配或拆分。这是通过拆分来实现的。
String s = "2.1+(sin 2)";
String parts[] = s.split("\\s+|(?=[^.\\w\\s])|(?<=[^.\\w\\s])");
System.out.println(Arrays.toString(parts));
通过使用Pattern和Matcher类进行匹配。
String s = "2.1+(sin 2)";
ArrayList<String> lst = new ArrayList<String>();
Matcher m = Pattern.compile("\\d+(?:\\.\\d+)?|[a-zA-Z]+|[^\\s\\w\\.]").matcher(s);
while(m.find())
{
lst.add(m.group());
}
System.out.println(lst);
输出:
[2.1, +, (, sin, 2, )]