2

我有一个包含大量数据的文件。在那个文件里面有一个词描述。我只想在该描述之后阅读双引号内的一行。例如:描述:“转换规范的字符值无效”。

首先,我想搜索单词描述。然后我需要阅读“强制转换规范的字符值无效”这一行。

我怎样才能做到这一点?

4

2 回答 2

1
var data = @"key:""desc""
key2: ""d2""
key2: ""d2""";

var keyValues = Regex
  .Matches(data, @"^(?<key>.*?): *""(?<value>.*)""", RegexOptions.Multiline)
  .Cast<Match>()
  .Select(m => new{
                   key = m.Groups["key"].Value, 
                   value = m.Groups["value"].Value});

foreach(var kv in keyValues)
{
    Console.WriteLine("{0} : {1}", kv.key, kv.value);
}
于 2012-12-04T20:10:02.087 回答
1

使用正则表达式,在这种情况下 Regex.Match 应该可以很好地工作。

using System.Text.RegularExpressions;
...
public static readonly REGEX_QUOTEFINDER = @"{0}\s*""(?<QUOTE>([^""]+))""";
public static string ReadQuotedString(string blob, string key)
{
    return Regex.Match(
        blob, 
        string.Format(REGEX_QUOTE, Regex.Escape(key))
    ).Groups["QUOTE"].Value;
}
...
string result = ReadQuotedString(File.ReadAllText("c:/test.txt"), ":Description:");

像上面这样的东西可能会奏效。

于 2012-12-04T20:06:29.967 回答