C#string.Split()不工作

C#string.Split()不工作,c#,string,loops,foreach,split,C#,String,Loops,Foreach,Split,我编写这段代码是为了查看字符串中的每个参数。 字符串如下所示:“render::rectangle(0,0,200,200,红色,2)” 这是我的代码: if (line.StartsWith("render::rectangle(")) { foreach(string parameterItem in line.Split('(', ')')) { string parameterIt = parameterItem; int posX = 0;

我编写这段代码是为了查看字符串中的每个参数。 字符串如下所示:“render::rectangle(0,0,200,200,红色,2)” 这是我的代码:

if (line.StartsWith("render::rectangle(")) {
    foreach(string parameterItem in line.Split('(', ')')) {
        string parameterIt = parameterItem;
        int posX = 0;
        int posY = 0;
        int width;
        int height;
        string colour = "White";
        int borderThickness = 0;
        int paramNum = 0;
        foreach(string parameter in parameterItem.Split(',')) {
            paramNum++;
            string param = parameter;
        }
    }
 }
这将返回“render::rectangle”,为什么Split()不能用于此字符串?请帮助。

您可以尝试以下方法:

foreach (string parameterItem in line.Substring(18, line.Length - 18).Split(','))
在第一个循环中,结果字符串为:

0, 0, 200, 200, Red, 2
这是您可以具体应用拆分的时间:

Split(',')
现在,如果字符串正在更改或处于动态状态,则可以获取startswith的长度,然后将其放入子字符串中,例如:

int startLength = @"render::rectangle(".Length;
foreach (string parameterItem in line.Substring(startLength, line.Length - startLength).Split(','))

您想要的输出是什么?每个参数在逗号之间。例如:当它循环通过第一个参数时,值应该是=“0”,然后是“0”、“200”、“200”、“红色”,然后是“2”。提示:这里有两个循环。为什么?您的第一个“循环”实际上应该只提取
之间作为
参数项的所有内容。你为什么要在那里打圈?为什么要声明额外的无意义变量
param
parametrit
?问题是,即使我精简了字符串,将内容拆分为字符串中一行上的一对参数,它仍然会显示出来。此外,parameterit还用于调试目的,以确定它是否在第一个循环中获取了除“render::rectangle”之外的任何其他内容,我的错误应该将代码删除。我用不同的字符串开始值尝试了相同的代码,除此之外,它对所有字符串都有效。