[英]Splitting string for expressions array
我正在尝试将字符串拆分为数字和运算符的数组,例如从"2.1+(sin 2)"
["2.1" , "+" , "(", "sin" , "2" , ")"]
获取["2.1" , "+" , "(", "sin" , "2" , ")"]
"2.1+(sin 2)"
。
如何正确解决呢? 我尝试使用java.util.regex.Pattern
,但是我不知道如何提取所有合适的元素。
您可以进行匹配或拆分。 通过拆分来了。
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, )]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.