我需要从以下字符串计算VB表达式:
"stringVar1 = \"stringVar1Value\" and boolVar1<>False or intVar1=22 and intVar2=33"
"stringVar1= \"stringVar1Value\" and boolVar1<>False or intVar1=22 and intVar2=33"
"stringVar1 = \"stringVar1Value\" and boolVar1<>False or intVar1=22 and intVar2=33"
我需要将它解析为类
的变量数组 public class ExpressionUnit
{
public string Variable { get; set; }
public string Operator { get; set; }
public string Value { get; set; }
}
Variable
是&#34; stringVar1&#34;,Operator
是&#34; =&#34;并且Value
是&#34; stringVar1Value&#34;。
或严格按顺序排列的字符串数组:
{ "stringVar1", "=", "stringVar1Value", "and", "boolVar1", "<>", "False", "or", "intVar1", "=", "22", "and", "intVar2", "=", "33" }
我会批评任何建议或想法。
答案 0 :(得分:0)
我找到了一些解决方案:
<html>
<body>
<table>
<tbody>
<tr>
<td>clickAndWait</td>
<td>css=input.button</td>
<td></td>
</tr>
<tr>
<td>assertXpathCount</td>
<td>//*[name() = 'ProductNumber' and text() = 'ABC']</td>
<td>1</td>
</tr>
</tbody>
</table>
</body>
</html>
单元测试证明它有效:
public static class StringParser
{
public static List<string> ParseExpression(string expression)
{
//expression = System.Text.RegularExpressions.Regex.Replace(expression, @"\s+", " ");
string word = string.Empty;
int i = 0;
List<string> list = new List<string>();
while (i < expression.Length)
{
if (expression[i] == ' ')
{
if (!string.IsNullOrEmpty(word))
{
list.Add(word);
word = string.Empty;
}
i++;
continue;
}
if (expression[i] == '=')
{
if (!string.IsNullOrEmpty(word))
{
list.Add(word);
}
word = new string(expression[i], 1);
list.Add(word);
word = string.Empty;
i++;
continue;
}
if (expression[i] == '<')
{
if (!string.IsNullOrEmpty(word))
{
list.Add(word);
}
word = new string(expression[i], 1);
i++;
word += expression[i];
list.Add(word);
word = string.Empty;
i++;
continue;
}
word += expression[i];
i++;
if (!string.IsNullOrEmpty(word) && i == expression.Length)
{
list.Add(word);
}
}
return list;
}
}
答案 1 :(得分:0)
using System.Diagnostics;
using System.Text.RegularExpressions;
namespace MrB
{
class Program
{
static void Main()
{
string s1 = "stringVar1 = \"stringVar1Value\" and boolVar1<>False or intVar1=22 and intVar2=33";
string s2 = "stringVar1= \"stringVar1Value\" and boolVar1<>False or intVar1=22 and intVar2=33";
string s3 = "stringVar1 = \"stringVar1Value\" and boolVar1<>False or intVar1=22 and intVar2=33";
var rgx = new Regex("=");
var replacement = " = ";
string s1b = rgx.Replace(s1, replacement);
string s2b = rgx.Replace(s2, replacement);
string s3b = rgx.Replace(s3, replacement);
rgx = new Regex(@"\s+");
replacement = " ";
string s1c = rgx.Replace(s1b, replacement);
string s2c = rgx.Replace(s2b, replacement);
string s3c = rgx.Replace(s3b, replacement);
string[] s1List = s1c.Split(' ');
string[] s2List = s2c.Split(' ');
string[] s3List = s3c.Split(' ');
Debugger.Break();
}
}
}