【问题标题】:Splitting the array with / slash用 / 斜线分割数组
【发布时间】:2012-03-29 06:01:15
【问题描述】:

从我的数组字符串中的调试器我得到这个:

"/mercedes-benz/190-class/1993/" class="canonicalLink" data-qstring="?sub=sedan">1993

我希望在每个'/' 之后拆分文本并将其放入string[],这是我的努力:

Queue<string> see = new Queue<string>(); //char[] a = {'\n '};
       List<car_facts> car_fact_list = new List<car_facts>();
       string[] car_detail;

       foreach (string s in car)
       {
         
            MatchCollection match = Regex.Matches(s, @"<a href=(.+?)</a>",
            RegexOptions.IgnoreCase);

            // Here we check the Match instance.
            foreach(Match mm in match)
            {
                // Finally, we get the Group value and display it.
                string key = mm.Groups[1].Value;
                //key.TrimStart('"');
                //key.Trim('"');
                key.Trim();
                
                // @HERE: I tried with string.Split as well and tried many combinations of separators
                car_detail = Regex.Split(key, "//");
                
                see.Enqueue(key);
            }
}

car_detail[0] 我得到这个"$[link]"&gt;$[title]

来自这个字符串

"/mercedes-benz/190-class/1993/" class="canonicalLink" data-qstring="?sub=sedan">1993

【问题讨论】:

    标签: c# string split delimiter


    【解决方案1】:

    不清楚你为什么在这里使用双斜线......

    string[] details = key.Split('/');
    

    应该可以正常工作。 (请注意,在 C# 中,正斜杠 不必 必须转义。)例如:

    using System;
    
    class Test
    {
        static void Main()
        {
            string text = "/mercedes-benz/190-class/1993/";
            string[] bits = text.Split('/');
            foreach (string bit in bits)
            {
                Console.WriteLine("'{0}'", bit);
            }
        }
    }
    

    输出:

    ''
    'mercedes-benz'
    '190-class'
    '1993'
    ''
    

    空字符串是由于前导和尾随斜杠造成的。如果你想避免这些,你可以使用

    string[] details = key.Split(new[] {'/'}, StringSplitOptions.RemoveEmptyEntries);
    

    注意事项:

    • car_facts 在 C# 中是一个非常规的名称。通常你会有CarFacts 之类的东西(或者可能只是CarCarInfo 等)。同样car_fact_list 通常是carFactList 或类似的东西。

    • 此代码没有按照您的预期进行:

      key.Trim();
      

      字符串在 .NET 中是不可变的 - 因此Trim() 返回对 new 字符串的引用,而不是更改现有字符串的内容。你可能想要:

      key = key.Trim();
      
    • 您当前正在为 car_detail 分配一个值,但从未使用它。为什么?

    • 一般来说,使用正则表达式解析 HTML 是一个非常糟糕的主意。考虑使用HTML Agility Pack 或类似的东西。

    【讨论】:

    • @RobustRob:它肯定工作 - 我将给出一个简短但完整的例子。请提供比“它不起作用”(原文如此)更多的信息。与您的预期相比,它的作用是什么?
    • 我得到相同的 "$[link]">$[title] ,这是一件事,我告诉你这些来自调试器中的值的结果,我正在使用 VS 2010 WPF C# 应用程序
    • @RobustRob:完全不清楚你的意思是什么,但试试我的简短但完整的程序 - 它有效。我看不到您在调试器中正在做什么,但是如果您发布一个类似的简短但完整的程序来演示该问题,我能够看到。另请阅读有关您的代码的各种注释。
    • HTML Agility Pack 的文档非常糟糕,示例非常少
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    相关资源
    最近更新 更多