我的目标是使用.net core和c#评估以下内容。
"XYZ = XYZ"
我的目标是使用以下字符串评估该字符串是否返回true或false。在此示例中,结果应为true,在此示例中:
"XYdddZ = XYZ"
`应该返回false。
基本上看起来类似于:
if ("XYZ = XYZ"){
}
编辑:
该字符串可能是动态的,并且包含类似“ XYZ = XYZ和XYZ!= XYaZ”的内容,因此拆分可能很困难
答案 0 :(得分:0)
您不需要lambda表达式。只需Split
字符串,然后使用string.Equals
。像这样:
var input = "XYZ = XYZ";
var split = input.Split('=');
return string.Equals(split[0].Trim(), split[1].Trim());
答案 1 :(得分:0)
您可以使用如下所示的正则表达式:
([a-zA-Z]\w*)\s*(<|>|(={1,2})|!=)\s*([a-zA-Z]\w*)
这将匹配三件事:
在那之后,您所要做的就是获取匹配项和组,查看两个单词并查看比较类型,然后从那里开始。
以下是一些使用此示例代码:
private void RegexTest()
{
var regex = new Regex(@"([a-zA-Z]\w*)\s*(<|>|(={1,2})|!=)\s*([a-zA-Z]\w*)");
var inputs = new string[]
{
"XYZ = XYZ",
"ABC != A",
"1 > 3",
"a12 < m34"
};
foreach (var input in inputs)
{
var match = regex.Match(input);
if (match.Length > 0)
{
Debug.WriteLine($"Match for ({input}): First: {match.Groups[1]}, Comparer: {match.Groups[2]}, Second: {match.Groups[4]}");
}
else
{
Debug.WriteLine($"No match for {input}");
}
}
}
这将导致输出如下所示:
Match for (XYZ = XYZ): First: XYZ, Comparer: =, Second: XYZ
Match for (ABC != A): First: ABC, Comparer: !=, Second: A
No match for 1 > 3
Match for (a12 < m34): First: a12, Comparer: <, Second: m34