我suggset 匹配而不是分裂。隨着pattern
幫助像
string pattern =
@"^\s*(?<Name>[A-Za-z0-9]+)\s*:\s*(?<Type>[A-Za-z0-9]+)(\s*:=\s*(?<Value>\S*))?\s*;\s*(//(?<Comment>.*))?$";
,我們可以簡單地分析,線
string[] source = new string[] {
"MinF : DINT ; //Minimum frequentie: 0 = 0,0 Hz",
"MaxF : DINT := L#100000; //Maximum reference:75000 = 75,0Hz",
"RampUp : DINT := L#50; //Ramp up tijd: 100 = 1,00 seconde",
"RampDown : DINT := L#50; //Ramp down tijd: 100 = 1,00 seconde",
"V1 : DINT ; //Snelheid 1: 50,00%",
};
var result = source
.Select(line => Regex.Match(line, pattern))
.Where(match => match.Success)
.Select(match => new {
name = match.Groups["Name"].Value,
type = match.Groups["Type"].Value,
value = match.Groups["Value"].Value,
comment = match.Groups["Comment"].Value, })
.ToArray();
測試
Console.Write(string.Join(Environment.NewLine, result
.Select(item => $"{item.name,-8} {item.type,4} {item.value,-8} {item.comment}")));
結果:
MinF DINT Minimum frequentie: 0 = 0,0 Hz
MaxF DINT L#100000 Maximum reference:75000 = 75,0Hz
RampUp DINT L#50 Ramp up tijd: 100 = 1,00 seconde
RampDown DINT L#50 Ramp down tijd: 100 = 1,00 seconde
V1 DINT Snelheid 1: 50,00%
謝謝你這個完美的作品。 –
@Lech Wiecierzynski:不客氣! –