从C#Windows窗体中的文本文件中提取数字

时间:2016-05-06 04:51:13

标签: c# .net windows forms winforms

我编写了一个代码,用于使用Windows From从文本文件中提取数字。问题是,输出以部分方式发生。第一行是打印还是最后一行。我想要包含数字

的所有行
(i.e) If the text file contains,
Auto 2017
Mech 2056
CSE 2016

我只想打印2017年,2056年,2016年。

以下是代码:

private void button1_Click(object sender, EventArgs e)
{
   string infile = textBox1.Text;
   StreamReader sr = new StreamReader(infile);
   string allDetails = File.ReadAllText(infile);
   string result = Regex.Match(allDetails, @"\d+").Value;
   richTextBox1.Text = result.ToString();
}

7 个答案:

答案 0 :(得分:1)

您正尝试获取数值。 Regex.Matches将帮助您解决问题。

以下是简化代码。

 private void button1_Click(object sender, EventArgs e)
 {          
    string filedetails = File.ReadAllText(textBox1.Text);
    var regexCollection = Regex.Matches(filedetails, @"\d+");
    foreach (Match rc in regexCollection)
       richTextBox1.AppendText(rc.Value + ",");
 }

答案 1 :(得分:0)

如果您想要输出2017,2056,2016

,可以这样做
private void button1_Click(object sender, EventArgs e)
{
     string infile = textBox1.Text;
     string[] lines = System.IO.File.ReadAllLines(infile);
     string temp = "";
     int i = 0;
     foreach (string line in lines)
     {
         string result = Regex.Match(line, @"\d+").Value;
         if (i == 0)
         {
            temp = result;
         }
         else
         {
            temp = temp + "," + result;
         }
         i++;
    }
    richTextBox1.Text = temp;
}

或者如果您想要单个值2017 2056 2016那么

private void button1_Click(object sender, EventArgs e)
{
     string infile = textBox1.Text;
     string[] lines = System.IO.File.ReadAllLines(infile);
     foreach (string line in lines)
     {
         string result = Regex.Match(line, @"\d+").Value;
         richTextBox1.Text = result ;
     }
}

答案 2 :(得分:0)

您需要使用该方法。 Regex.MatchesMatches方法在指定的输入字符串中搜索所有正则表达式。

Match方法仅返回第一个匹配项,需要检索后续匹配项。

private void button1_Click(object sender, EventArgs e)
{
   string infile = textBox1.Text;
   StreamReader sr = new StreamReader(infile);
   string allDetails = File.ReadAllText(infile);
   var regexMatchCollection = Regex.Matches(allDetails, @"\d+");
   foreach(Match mc in regexMatchCollection)
   { 
     richTextBox1.AppendText(mc.Value);
     richTextBox1.AppendText(",");
   }

}

答案 3 :(得分:0)

不使用Regex,以下是简化代码

private void button1_Click(object sender, EventArgs e)
{
   StringBuilder numbers = new StringBuilder();
   string allDetails = File.ReadAllText(textBox1.Text);
   foreach(string word in allDetails.Split(' '))
   {
       int number;
       if(int.TryParse(word, out number))
       {
            numbers.Append(number);
            numbers.Append(",");
       } 
   }
   richTextBox1.Text = numbers.Trim(',');
}

答案 4 :(得分:0)

test.txt有

Auto 2017
Mech 2056
CSE 2016

在以下程序中File.ReadAllLines将分别存储string array中的每一行。然后我们将使用foreach loop一次读取单行并将提取的数字存储在列表中,例如2017最后使用string.Join我们将加入数组,并将每个单词与","分开,并将其保存在字符串中

List<string> list = new List<string>();
            var textfile = File.ReadAllLines(@"D:\test.txt");
            foreach (var line in textfile)
            {
            string result = Regex.Match(line, @"\d+").Value;
                list.Add(result);
            }
            string numbers = string.Join(",",list.ToArray());

输出值为

2017,2056,2016

答案 5 :(得分:0)

private void button1_Click(object sender, EventArgs e)
{
            string infile = textBox1.Text;
            StreamReader sr = new StreamReader(infile);
            string allDetails = File.ReadAllText(infile);
            string result = string.Empty;
            foreach (var item in Regex.Matches(allDetails, @"\d+"))
            {
                result = result + item.ToString() + ",";
            }

            richTextBox1.Text = result.TrimEnd(',');
}

答案 6 :(得分:0)

 static void Main(string[] args)
    {

        string[] lines = System.IO.File.ReadAllLines(@"C:\Users\admin\Desktop\ConsoleApplication1\ConsoleApplication1\txtFile.txt");
        List<string> Codelst = new List<string>();
        foreach (var item in lines)
        {
            var a= Regex.Match(item, @"\d+").Value;
            Codelst .Add(a);
        }
        var r = Codelst;
    }

输出是这样的: enter image description here