List<string> KeyList = new List<string>();
List<string> ValueList = new List<string>();
のような、すなわち「キーリスト」や「ValueListのを」
List<String> l_lstRowData = new List<string> { "Data 1 32:01805043*0FFFFFFF",
"Data 3, 20.0e-3",
"Data 2, 1.0e-3 172:?:CRC" ,
"Data 6"
};
と2つのリストを以下のように私は行データのセットを抱えている
私は2つを入力する必要がありますPattern Matching
を使用してl_lstRowData
からのデータからList<String>
そして、ここでは、この
Pattern
です
パターンでGroup
KEY
がdata
は、整数値が続く」と一致する必要があり、そこに存在する場合:だから最後に2つのList
sが
KeyList
{ "Data 1" }
{ "Data 3, 20.0e-3" }
{ "Data 2, 1.0e-3" }
{ "Data 6" }
ValueList
{ "32:01805043*0FFFFFFF" }
{ "" }
{ "172:?:CRC" }
{ "" }
のscenerioが含まれています
String l_strPattern = @"(?<KEY>(Data|data|DATA)\s[0-9]*[,]?[ ]?[0-9e.-]*)[ \t\r\n]*(?<Value>[0-9A-Za-z:?*!. \t\r\n\-]*)";
Regex CompiledPattern=new Regex(l_strPattern,RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
コンマ(、)、次の文字列、すなわちdouble
の値
Group
パターン内のは、whitespace
の後の文字列と一致する必要があります。最初の文字列では32:01805043*0FFFFFFF
と一致する必要がありますが、3番目の172:?:CRC
に一致する必要があります。
は、ここに私のサンプルコード
for (int i = 0; i < l_lstRowData.Count; i++)
{
MatchCollection M = CompiledPattern.Matches(l_lstRowData[i], 0);
KeyList.Add(M[0].Groups["KEY"].Value);
ValueList.Add(M[0].Groups["Value"].Value);
}
あるしかし、私のPattern
は、このような状況では動作しません。
KeyList
{ "Data 1 32" } // 32 should be in the next list
{ "Data 3, 20.0e-3" }
{ "Data 2, 1.0e-3" }
{ "Data 6" }
ValueList
{ ":01805043*0FFFFFFF" }
{ "" }
{ "172:?:CRC" }
{ "" }
よう
EDIT
私のコードの結果、私は私のパターンを書き換えるために助けてください。
私は失敗したケースに対してマッチを実行し、パートごとに分割します。 (例えば、「うまくいかない」とはどういう意味ですか?) –