たとえば、次のパターンがあります:
- Out{d}bytes
- In{d}bytes
- In{d}bytesOut{d}bytes
- Out{d}words
- In{d}words
- In{d}wordsOut {d} 語({d} は数字)。
私はのファンではありませんcase
。このテキストに従って、次のような形式を作成するにはどうすればよいですか。
p => p.Out == 8 && p.In == 16 //In8bytesOut16bytes
p => p.Out == 8*8 && p.In == 4*8 // In8Out4words
p => p.In == 8 // In8bytes
正規表現?どんなアドバイスも役に立ちます。前もって感謝します。
Match match;
int inBytes = 0;
int outBytes = 0;
string pattern =
@"(?<InOut>In|Out)(?<inBytes>\d+)bytes((?<Out>Out)(? <outBytes>\d+)bytes)?";
Func<string, IService, bool> predicate;
match = Regex.Match(description, pattern);
if ((match.Groups[4].Length > 0))
{
int.TryParse(match.Groups[3].Value, out inBytes);
int.TryParse(match.Groups[5].Value, out outBytes);
predicate = p => p.In == inBytes && p.Out == outBytes;
}
入力はフォーマットされた文字列で、ファイルから取得されます。上記のパターンのいずれかを満たす必要があります。主なアイデアは、この文字列から数値を取得することです。バイト単位のInとOutの2 つの定義を含むサービスがあります。この文字列を解析して条件を作成する必要があります。
たとえば、In4bytesOut8bytes を取得します。4と8を取得して
、次のような条件を作成する必要がありますFunc<string, IService, bool> predicate = p => p.In == 4 && p.Out == 8