2

大量のデータを含むファイルがあります。そのファイル内には、説明という単語があります。その説明の後にのみ、二重引用符内にある行を読みたいです。例:説明:「キャスト指定の文字値が無効です」。

まず、単語の説明を検索します。次に、「キャスト仕様の無効な文字値」という行を読む必要があります。

どうやってやるの?

4

2 に答える 2

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 に答える
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 に答える