【问题标题】:Special Multi-Character string splits c#特殊的多字符字符串拆分c#
【发布时间】:2017-05-02 18:57:09
【问题描述】:

我有一个字符串 [它不只是查看字符串中的 GUID 模式,我正在使用 HtmlAgilityPack 解析并将它们转换为 htmlnodes,然后我必须仅在节点包含可提取 id 和type=\"ClickButton\" value='上传,为简单起见,我减少了所有细节]

"\r\n                        <extractable id=\"00000000-0000-0000-0000-000000000000\" class=\"myButtonC\" type=\"ClickButton\" value='upload'>\r\n                    "

我想从中提取 GUID。它是 HTML 解析的一部分。所以我使用了下面的方法并尝试提取,似乎不起作用。我如何表示 "\" " ?和 "=\"" ?我使用 " as \" 和 \ as \ 来表示文字。有什么建议吗?

private static string ExtractId(string str)       
{
    string eId = string.Empty;
    string[] arrys = str.Split(new string[] {@"\"" "}, StringSplitOptions.None);
    foreach (string[] lists in arrys.Select(t => t.Split(new string[] {@"=\"""}, StringSplitOptions.None)))
    {
        for (int j = 0; j < lists.Length; j++)
        {
            if (lists[j].Contains("extractable id"))
            {
                eId = lists[j + 1];
            }
        }
    }
    return eId;
}

【问题讨论】:

  • 类似xml的尝试使用xml阅读器
  • 看起来像HTML,所以使用HtmlAgilityPack来解析。
  • 我同意 Hans,使用 HtmlAgitityPack 获取 extractable 节点并从 id 属性中提取值。
  • 我第二次将其视为 html - 如果您依赖字符序列并尝试解析它,如果 xml/html 更改为 &lt;extractable class="myButtonC" id="00000000-0000-0000-0000-000000000000" ...&gt;,您的代码可能会中断

标签: c# split string-literals


【解决方案1】:

我建议使用正则表达式来匹配Guids:

string source = "\r\n <extractable id=\"00000000-0000-0000-0000-000000000000\" class=\"myButtonC\" type=\"ClickButton\" value='upload'>\r\n";

Guid[] result = Regex
  .Matches(
     source, 
    "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}") 
  .OfType<Match>()
  .Select(match => new Guid(match.Value))
  .ToArray();

【讨论】:

    【解决方案2】:

    如何使用正则表达式

    string pattern = @"([a-z0-9]{8}[-][a-z0-9]{4}[-][a-z0-9]{4}[-][a-z0-9]{4}[-][a-z0-9]{12})";
    
    MatchCollection mc = Regex.Matches(your_string, pattern);
    
    foreach (var sGUID in mc)
    {
        // do what you want
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      相关资源
      最近更新 更多