0

我知道发生了什么,但我试图让我的 .Split() 忽略某些字符。

样本:

1|2|3|This is a string|type:1

“This is a string”部分是用户输入用户可以输入拆分字符,| 在这种情况下,所以我想用 \| 来逃避它。它似乎仍然基于此分裂。这是在网络上完成的,所以我在想一个聪明的举动实际上可能只是 JSON.encode(user_in) 来绕过它?

1|2|3| This is \|a string|type:1

仍然在转义字符上分裂,因为我没有将其定义为特殊情况。我将如何解决这个问题?

4

2 回答 2

3

您可以改用 Regex.Split 然后在 | 上拆分 前面没有 .

        // -- regex for | not preceded by a \
        string input = @"1|2|3|This is a string\|type:1";
        string pattern = @"(?<!\\)[|]";
        string[] substrings = Regex.Split(input, pattern);

        foreach (string match in substrings)
        {
            Console.WriteLine("'{0}'", match);
        }
于 2012-08-23T18:10:33.440 回答
0

您可以先用特殊的东西替换分隔符,然后拆分它,最后将其替换回来。

    var initial = @"1|2|3|This is \| a string|type:1";
    var modified = initial.Replace(@"\|", "@@@");
    IEnumerable<string> result = modified.Split('|');
    result = result.Select(i => i.Replace("@@@", @"\|"));
于 2012-08-23T18:08:44.273 回答