我正在尝试根据正则表达式将字符串拆分为标记。但是split()给出错误 Illegal Escape Sequencce 。
我正在尝试将以下字符串拆分为令牌。
例如,以下字符串转换为
1 2.0 3.145 4.0
此
+ - /
&安培;此
String[] tokens = expression.split("\\+\\-\\x\\/");
这是我写过的正则表达式,但这有一些问题并且会出错。
public KeyValuePair<string, string> CheckForNonNullArguments()
{
System.Reflection.PropertyInfo[] properties = typeof(BaseBLL).GetProperties();
foreach (System.Reflection.PropertyInfo property in properties)
if (property.GetValue(this, null) != null && (!property.GetValue(this, null).Equals("NULL") && !property.GetValue(this, null).ToString().Equals("0")) && !String.IsNullOrEmpty(property.GetValue(this, null).ToString()))
return new KeyValuePair<string, string>(property.Name.ToString(), property.GetValue(this, null).ToString());
return new KeyValuePair<string, string>("", "");
//if (property.GetValue(this, null) != null) GetName(() => property); ;
}
我做错了什么?
修改: 我的最终目标是评估一个包含数学表达式的字符串。计算其结果。是否有可以在Android上使用的库?
答案 0 :(得分:0)
将您的正则表达式更新为expression.split("[-+/]")
如果你想要阵列,你可以使用它:
List<String> operators = new ArrayList<>();
List<String> operands = new ArrayList<>();
StringTokenizer st = new StringTokenizer(expression, "+-/", true);
while (st.hasMoreTokens()) {
String token = st.nextToken();
if ("+-/".contains(token)) {
operators.add(token);
} else {
operands.add(token);
}
}
答案 1 :(得分:0)
评估一个表达式是非常棘手的,比如应该在哪个顺序计算它们之前已经解决了这个问题:http://www.geeksforgeeks.org/expression-evaluation/
并且
@Roma Khomyshyn链接也很有用。