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"
};
두 개의 목록을 다음과 같이 내가 행 데이터의 집합을 데
나는 두 가지를 작성해야 여기 Pattern Matching
그리고를 사용 l_lstRowData
의 데이터에서 List<String>
이
Pattern
입니다
Group
"정수 값 다음에 data
일치해야 패턴에 KEY
하고, 존재하는 경우 :
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);
그래서 결국 두 List
들
KeyList
{ "Data 1" }
{ "Data 3, 20.0e-3" }
{ "Data 2, 1.0e-3" }
{ "Data 6" }
ValueList
{ "32:01805043*0FFFFFFF" }
{ "" }
{ "172:?:CRC" }
{ "" }
시나리오에는 포함됩니다 쉼표 (,) 다음 문자열, 즉 double
값
Group
패턴의은 whitespace
다음의 문자열과 일치해야합니다. 첫 번째 문자열에서 32:01805043*0FFFFFFF
과 일치해야하지만 세 번째 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" }
{ "" }
가 내 패턴을 재 작성 도와주세요처럼 내 코드 결과.
나는 실패한 경우에 대해 경기를 치고 부분적으로 분해 할 것이다. 예 : "작동하지 않는 것"이 무엇인지 판단하십시오. –