C#字符串解析

肖恩

我有这样的字符串

string temp = "'ADDR_LINE_2','MODEL','TABLE',5,'S','Y','C40','MUL,NBLD,NITA,NUND','','Address line 2'"

每对单引号都是一个以逗号分隔的字段。我想清空字符串中的第8个字段。我不能简单地做,replace("MUL,NBLD,NITA,NUND","")因为该字段可以包含任何内容。另请注意,第4个字段是数字,因此没有单引号5

我怎样才能做到这一点?

马修·怀特(Matthew Whited)
static void Main()
{
    var temp = "'ADDR_LINE_2','MODEL','TABLE',5,'S','Y','C40','MUL,NBLD,NITA,NUND','','Address line 2'";

    var parts = Split(temp).ToArray();
    parts[7] = null;
    var ret = string.Join(",", parts);

    // or replace the above 3 lines with this...        
    //var ret = string.Join(",", Split(temp).Select((v,i)=>i!=7 ? v : null));

    //ret == "'ADDR_LINE_2','MODEL','TABLE',5,'S','Y','C40',,'','Address line 2'"
}

public static IEnumerable<string> Split(string input, char delimiter = ',', char quote = '\'')
{
    string temp = "";
    bool skipDelimiter = false;

    foreach (var c in input)
    {
        if (c == quote)
            skipDelimiter = !skipDelimiter;
        else if (c == delimiter && !skipDelimiter)
        {
            //do split
            yield return temp;
            temp = "";
            continue;
        }

        temp += c;
    }
    yield return temp;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章