使用Regex将特定字符串从多行文件加载到单独的textBox字段中

时间:2014-02-22 11:13:40

标签: c# regex winforms textbox

我有多个字符串的文件,打开的是使用按钮和openFileDialog。目标是将每个唯一字符串加载到单个textBox。

private void OpenClick(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
        {

每个这样的文件将始终具有相同的代码(0.0.5; 0.1.2 * 26等),只有“()”内的值才会改变。

请显示确切的示例,如何进行硬编码并获得如下结果的最佳方式:

textBox1= 2008/12/22 08:10:02
textBox2= DC331TMMBA5BAC
textBox3= 00000000
textBox4= 45889662
textBox5= TA-6301
textBox6= 
textBox7= 0812210743
textBox8= 5000*1
textBox9= 0812210745
textBox9= 0000 textBox10= 0306021530

文件中数据块的一部分:

*** 2008/12/22 08:10:02 *** SLB
\@DC331TMMBA5BAC
F.F(00000000)
0.0.0(45889662)
0.0.1(TA-6301 )
0.0.5(        )
0.1.2*26(0812210743)
0.3.3(  5000*1/kWh)
C.64.0*01(0812210745)
1.6.1*26(0000*kW)(0306021530)

2 个答案:

答案 0 :(得分:0)

这样的事似乎没问题。

var date = Regex.Match(input, @"(\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2})").Groups[0].Value;
var secondLine = Regex.Match(input, @"\\@(.*)").Groups[1].Value;
var theRest = Regex.Matches(input, @"(?:\()([^)]+)(?:\))");

Console.WriteLine(date); // 2008/12/22 08:10:02
Console.WriteLine(secondLine); // DC331TMMBA5BAC

foreach (Match match in theRest) {
    Console.WriteLine(match.Groups[1].Value);
}

完整结果:

2008/12/22 08:10:02
DC331TMMBA5BAC
00000000
45889662
TA-6301

0812210743
5000*1/kWh
0812210745
0000*kW
0306021530

答案 1 :(得分:0)

    var rx = new Regex(
        @"\s*\*+(?<1>[0-9/\s:]+)\*+.*" + Environment.NewLine +
        @"\s*\\@(?<2>.+).*" + Environment.NewLine +
        @"[^\(]*\((?<3>.+)\).*" + Environment.NewLine +
        @"[^\(]*\((?<4>.+)\).*" + Environment.NewLine +
        @"[^\(]*\((?<5>.+)\).*" + Environment.NewLine +
        @"[^\(]*\((?<6>.+)\).*" + Environment.NewLine +
        @"[^\(]*\((?<7>.+)\).*" + Environment.NewLine +
        @"[^\(]*\((?<8>.+)\).*" + Environment.NewLine +
        @"[^\(]*\((?<9>[^\)]+)\)[^\(]*\((?<10>[^\)]+)\)");

    var str = @"*** 2008/12/22 08:10:02 *** SLB
                \@DC331TMMBA5BAC
                F.F(00000000)
                0.0.0(45889662)
                0.0.1(TA-6301 )
                0.0.5(        )
                0.1.2*26(0812210743)
                0.3.3(  5000*1/kWh)
                C.64.0*01(0812210745)
                1.6.1*26(0000*kW)(0306021530)";

    var m = rx.Match(str);

    var text1 = m.Groups["1"].Value;
    var text2 = m.Groups["2"].Value;

    //...