【问题标题】:Regex split string on multiple separators with quotes带引号的多个分隔符上的正则表达式拆分字符串
【发布时间】:2012-03-23 08:56:25
【问题描述】:

我有以下字符串(双引号是字符串的一部分):

"abc def ghi" "%1" "%2"

所以字符串以双引号开头,每个段由" "分隔,字符串再次以双引号结尾。我想把它分成:

abc def ghi
%1
%2

我尝试了以下方法:"(^\")|(\" \")|(\"$)",但这并没有给我想要的结果。

【问题讨论】:

    标签: c# .net regex split


    【解决方案1】:

    不要复杂化。只需使用字符串拆分:

            string test = "\"abc def ghi\" \"%1\" \"%2\"";
            var splits = test.Split(new string[]{"\" \"","\""},StringSplitOptions.RemoveEmptyEntries);
            foreach (var split in splits)
            {
                Console.WriteLine(split);
            }
    

    (也删除多余的/空的条目)

    【讨论】:

    • 比我的回答好,喜欢。
    • 正是我想要的结果:) 谢谢。
    【解决方案2】:
    string s = "\"abc def ghi\" \"%1\" \"%2\"";
    string[] splittedStrings = s.Split('"');
    string a = splittedStrings[1];
    string b = splittedStrings[3];
    string c = splittedStrings[5];
    

    【讨论】:

    • 喜欢这个,因为它是一个非常简单的解决方案。但是,我想要一个只包含 3 个字符串的结果,而不是 7...
    • @RonaldWildenberg - 看看我的分裂变化。
    【解决方案3】:
    Regex regex = new Regex("\"(.*?)\"");
    

    结果:

    http://rubular.com/r/lXbDIpkRRQ

    【讨论】:

    • 这是您使用Regex 的答案。不错:]。
    • 这可行,但结果是一个包含 7 个字符串的数组:["", "abc def ghi", " ", "%1", " ", "%2", ""]。我想得到一个包含 3 个字符串的结果。
    猜你喜欢
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多