-1

我有字符串(来自文件):

    [\x22thanh\x22,
        [[\x22thanh\\u003Cb\\u003E nien\\u003C\\/b\\u003E\x22,0,[]],
        [\x22thanh\\u003Cb\\u003E ca\\u003C\\/b\\u003E\x22,0,[]],
        [\x22thanh\\u003Cb\\u003E nhan\\u003C\\/b\\u003E\x22,0,[]],
        [\x22thanh\\u003Cb\\u003E thao\\u003C\\/b\\u003E\x22,0,[]]
    ]

我将此字符串保存为变量名“s”。我想拆分“[\x22”和“\x22”之间的所有字符串,然后保存到一个名为“s2”的数组中。我怎么能做到这一点?非常感谢你!

4

4 回答 4

3

您可以执行以下操作:

var myArray = myString.Split("[\x22");

你也想删除最后一个字符吗?

于 2012-09-03T05:55:37.930 回答
2
string[] s2 = s.Split(new string[] {@"[\x22", @"\x22"}, 
                        StringSplitOptions.RemoveEmptyEntries);
于 2012-09-03T05:57:48.187 回答
1

您可以找到第一个 \x22 和下一个 \x22 字符串的位置。接下来,您应该复制该位置之间的文本。您可以使用IndexOf方法获得位置。

于 2012-09-03T05:57:33.070 回答
1
        string s = @"[\x22thanh\x22,
    [[\x22thanh\\u003Cb\\u003E nien\\u003C\\/b\\u003E\x22,0,[]],
    [\x22thanh\\u003Cb\\u003E ca\\u003C\\/b\\u003E\x22,0,[]],
    [\x22thanh\\u003Cb\\u003E nhan\\u003C\\/b\\u003E\x22,0,[]],
    [\x22thanh\\u003Cb\\u003E thao\\u003C\\/b\\u003E\x22,0,[]]
]";
        string start = @"[\x22";
        string end = @"\x22";
        int pos = -1;

        List<string> list = new List<string>();

        while ((pos = s.IndexOf(start)) > -1)
        {
            s = s.Substring(pos + start.Length);
            if ((pos = s.IndexOf(end)) > -1)
            {
                list.Add(s.Substring(0, pos));
                s = s.Substring(pos + end.Length);
            }
            else
                break;
        }

        string[] s2 = list.ToArray();

编辑

使用相同的结果Split

  string[] s2 = s.Split(new string[] { @"[\x22" }, 
                        StringSplitOptions.RemoveEmptyEntries)
                 .Select(i => i.Substring(0, i.IndexOf(@"\x22")))
                 .ToArray();
于 2012-09-03T06:10:12.467 回答