【问题标题】:How divide a string into array如何将字符串分成数组
【发布时间】:2010-02-26 08:22:45
【问题描述】:

如果我有以下纯字符串,如何将其分成三个元素的数组?

{["a","English"],["b","US"],["c","Chinese"]}

["a","English"],["b","US"],["c","Chinese"]

这个问题和JSON字符串解析有关,不知道有没有API方便转换。

【问题讨论】:

  • .net 有很多 JSON 框架,抱歉我几年没做 JSON,所以我不知道这几天有什么巫婆框架来指点你。但是,您不必为 JSON 进行自己的字符串处理!

标签: c# json


【解决方案1】:

【讨论】:

    【解决方案2】:

    我使用正则表达式编写了一个小控制台示例,很可能有更好的方法。

    static void Main(string[] args)
        {
            string str = "{[\"a\",\"English\"],[\"b\",\"US\"],[\"c\",\"Chinese\"]}";
            foreach (System.Text.RegularExpressions.Match m in System.Text.RegularExpressions.Regex.Matches(str, @"((\[.*?\]))"))
            {
                Console.WriteLine(m.Captures[0]);
            }
        }
    

    【讨论】:

    • @rerun:我看到你的解决方案最适合我目前的情况。可以详细说明匹配模式吗?我不知道正则表达式。谢谢。
    • 正则表达式是一个很大的话题,但基本上它是一种速记文本匹配和捕获的方式。我提供的匹配字符串匹配 [] 之间的所有字符并将它们存储在捕获中。看看regular-expressions.info/tutorial.html 它有很多很棒的信息。
    • 谢谢。双括号是什么意思?
    • 如果您的字符串曾经包含 '[' 或 ']' 字符,您将需要一个更好的正则表达式。或者正如 Jamie Zawinski 在他 1997 年的名言中所说的那样:“有些人在遇到问题时会想‘我知道,我会使用正则表达式。’现在他们有两个问题。” DataContract 序列化是更好的选择。
    【解决方案3】:

    ASP.NET MVC 附带with methods,用于轻松将集合转换为 JSON 格式。在System.Web.Script.Serialization 中还有JavaScriptSerializer Class。最后,James Newton 还提供了一个不错的 3rd 方库,名为 Json.NET,您可以使用它。

    【讨论】:

      【解决方案4】:

      删除花括号,然后使用 String.Split,以 ',' 作为分隔符。

      不幸的是,我从来没有做过 JSON 的东西,所以不知道解析库。你不能让 WCF 为你做这些事情吗?

      【讨论】:

        【解决方案5】:

        使用 String.Split 对单个标记不起作用,因为每个标记中的字符串也包含一个字符串(如果我理解要求,数组元素最终应该是:

        1. ["a","English"]
        2. ["b","US"]
        3. ["c","中文"]

        如果您使用 string.Split 并使用逗号作为分隔符,则数组将由以下内容组成:

        1. [“一个”
        2. “英文”]
        3. [“b”
        4. “美国”]
        5. [“c”
        6. “中文”]

        这里有一个我读过但从未使用过的 JSON 解析器:

        http://james.newtonking.com/pages/json-net.aspx

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-24
          • 1970-01-01
          相关资源
          最近更新 更多