我在拆分这条线时遇到问题。我想在“@VAR;”之间获取每个字符串 和“@ENDVAR;”。所以最后,应该有一个输出:
Variable=Speed;Value=Fast;
Variable=Fabricator;Value=Freescale;Op==;
稍后我将使用“;”分隔每个子字符串 作为分隔符,但我想不会那么难。这是一条线的样子:
@VAR;Variable=Speed;Value=Fast;Op==;@ENDVAR;@VAR;Variable=Fabricator;Value=Freescale;Op==;@ENDVAR;
我尝试了一些拆分选项,但大多数时候我只是得到一个空字符串。我也尝试了一个正则表达式。但要么正则表达式错误,要么不适合我的字符串。可能是错误的,在学校我们学习的正则表达式与 C# 中使用的不同,所以我在实现时很困惑。
Regex.Match(t, @"/@VAR([a-z=a-z]*)/@ENDVAR")
编辑:
一个小问题:我正在迭代许多行,例如问题中的行。我在线上使用 NoIdeas 代码使其成型。下一步是将其打印为文本文件。要打印一个数组,我必须循环它。但是在每次迭代中,当我得到一个新行时,我会用当前拆分的字符串覆盖数组。我将其余代码放在问题中,如果有人可以帮助我,那就太好了。
string[] w ;
foreach (EA.Element theObjects in myPackageObject.Elements)
{
theObjects.Type = "Object";
foreach (EA.Element theElements in PackageHW.Elements)
{
if (theObjects.ClassfierID == theElements.ElementID)
{
t = theObjects.RunState;
w = t.Replace("@ENDVAR;", "@VAR;").Replace("@VAR;", ";").Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in w)
{
tw2.WriteLine(s);
}
}
}
}
带有 foreach 循环的部分肯定是错误的。我需要一些东西来打印每个拆分的 t。提前致谢。