将带有相对语句的字符串转换为绝对值
本文关键字:字符串 转换 绝对值 语句 相对 | 更新日期: 2023-09-27 17:55:35
>我有如下字符串:
"[Current.Age] - 10"
"[Current.Height] + 50"
"[Current.Age] + 10 - [Current.Height] - 50"
我想用当前选定对象的数值替换[Current.Something]
,例如,所选对象可能具有以下状态:
var student = new Student();
student.Age = 20;
student.Height = 180;
因此,字符串的结尾应如下所示:
"20 - 10" * or better * "10"
"180 + 50" * or better * "230"
"20 + 10 - 180 - 50" * or better * "-200"
我想我应该为此使用正则表达式。关于我如何做到这一点的任何想法?
编辑:我需要的几乎是可以取[Current.Something]
并用相关值替换它们的东西。我知道我可以通过简单的字符串操作来做到这一点,但我只是想知道是否有一种简短的方法可以做到这一点。
如果你可以控制包含该值的类;你可以添加一个叫做:
int getValue(string fromThis)
{
switch(fromThis)
{
case "age": {....
}
然后你需要通过文本解析器运行文本(你应该能够相当容易地创建onc)。
像这样:
string[] newStrings = newString.Split(' ');
if (newStrings.Length < 3)
{
//error
}
else if (newStrings[0][0] != '[')
{
//error
}
else
{
int newValue = 0;
string fieldString = newStrings[0];// Extract just the part you need....
// I would probably do the above in a method
int currentValue = getValue(fieldString);
int changeValue;
int.TryParse(newStrings[2], out changeValue);
switch (newStrings[1])
{
case "+":
{
newValue = currentValue + changeValue;
break;
}
case "-":
{
newValue = currentValue - changeValue;
break;
}
default:
{
//error
break;
}
}
//do something with new value
}
确定如何处理连接语句会有更多的工作,但上述内容应该会让你朝着正确的方向前进。使用反射有稍微干净的方法来做到这一点,但它更难维护。