【问题标题】:Get values inside quotes from a string从字符串中获取引号内的值
【发布时间】:2015-09-14 03:12:56
【问题描述】:

我有一个类似这样的字符串:

<BU Name="xyz" SerialNo="3838383" impression="jdhfl87lkjh8937ljk" />

我想提取这样的值:

名称 = xyz 序列号 = 3838383 印象 = jdhfl87lkjh8937ljk

如何在 C# 中获取这些值?

我正在使用 C# 3.5。

【问题讨论】:

  • 使用 LINQ to XML 之类的东西,将其解析为 XElement,然后使用 Attribute 方法将每个属性获取为 XAttribute。然后,您可以将其转换为相关类型,例如int 用于SerialNostring 用于其他两个。您已经尝试了多少,出了什么问题?
  • @JonSkeet 我尝试使用 .contains 并搜索名称,但没有遵循如何读取名称的值。请举例说明。
  • 不,请做一些研究——我已经在这里给了你基本的大纲。你有 XML - 所以使用 XML 解析器。提示:XElement.Parse...
  • @JonSkeet 所以首先我需要把它转换成XML然后解析XElement?
  • 已经是 XML。您可以使用 XElement element = XElement.Parse(yourVariable); 将其解析为 XElement

标签: c# .net .net-3.5 c#-3.0


【解决方案1】:

如果由于某种原因您不想使用 Xml 解析器,您可以使用正则表达式来实现。

使用这个正则表达式:

(\w)+=\"(\w)+\"

像这样使用这个正则表达式:

   var input = @"<BU Name=""xyz"" SerialNo=""3838383"" impression=""jdhfl87lkjh8937ljk"" />";
   var pattern = @"(\w)+=\""(\w)+\""";
   var result = Regex.Matches(input, pattern);
   foreach (var match in result.Cast<Match>())
   {
       Console.WriteLine(match.Value);
   }

结果:

//Name="xyz"
//SerialNo="3838383"
//impression="jdhfl87lkjh8937ljk"
//Press any key to continue.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    相关资源
    最近更新 更多