我有一个包含大量数据的文件。在那个文件里面有一个词描述。我只想在该描述之后阅读双引号内的一行。例如:描述:“转换规范的字符值无效”。
首先,我想搜索单词描述。然后我需要阅读“强制转换规范的字符值无效”这一行。
我怎样才能做到这一点?
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);
}
使用正则表达式,在这种情况下 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:");
像上面这样的东西可能会奏效。