【问题标题】:How to split this string to array?如何将此字符串拆分为数组?
【发布时间】:2012-09-03 05:53:09
【问题描述】:

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

    [\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”的数组中。我怎么能做到这一点?非常感谢!

【问题讨论】:

  • @TuyenTk 你期待什么结果?
  • 我想要一个这样的数组:s2[0] = thanh; s2[1] = thanh\\u003Cb\\u003E nien\\u003C\\/b\\u003E;...

标签: c# arrays string split


【解决方案1】:

你可以这样做:

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

您也想删除最后的字符吗?

【讨论】:

    【解决方案2】:
    string[] s2 = s.Split(new string[] {@"[\x22", @"\x22"}, 
                            StringSplitOptions.RemoveEmptyEntries);
    

    【讨论】:

    • +1 用于使用有用的Split 重载,节省其他黑客。
    • 但我认为您可能还需要在"[[\x22" 上进行拆分,并且可能还需要在" ", "," 上进行拆分。
    • 谢谢,我知道这可能不是完美的解决方案(我认为 OP 还必须删除新行等),但它回答了这个问题:“我想拆分所有字符串之间”[ \x22”和“\x22”,然后保存到名为“s2”的数组中。其他的东西不是很清楚,所以我没有尝试(特别是因为我没有完全理解问题)
    【解决方案3】:
            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();
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 2015-07-18
        • 1970-01-01
        • 1970-01-01
        • 2016-04-01
        相关资源
        最近更新 更多