2016-05-06 13 views
0

Windows Fromを使用してテキストファイルから数値を抽出するコードを作成しました。問題は、出力が部分的に発生することです。最初の行が印刷中か最後の行かを示します。番号を含むすべての行が必要ですC#Windowsフォームのテキストファイルから数値を抽出する

(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(); 
} 

答えて

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; 
} 

か、単一の値が欲しい場合201720562016

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 ; 
    } 
} 
0
をしたい場合は、この方法を行うことができます

このメソッドを使用する必要があります。 Regex.MatchesMatchesメソッドは、指定された入力文字列で正規表現のすべての出現を検索します。

Matchメソッドは、最初の一致のみを返します。後続の一致を取得する必要があります。 Regexを使用せずに

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(","); 
    } 

} 
0

は、以下の簡略化されたコードにある

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(','); 
} 
+0

OPはまた、あなたのコードが追加されます、テキストボックスからテキストを読みたくなかった '、'更新richTextBox1' – Mostafiz

+0

の冒頭で、 textbox1.textにはファイルパスがあります –

0

test.txtのstring array separately.Then我々のすべての行を格納する次のプログラムFile.ReadAllLines

Auto 2017 
Mech 2056 
CSE 2016 

を持っていますforeach loopを使用して、一度に1行を読み取り、抽出された数値をリスト(例:2017)、最後にstring.Join我々は、出力値は、あなたが数値をつかむしようとしている

2017,2056,2016 
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(','); 
} 
1

なります

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()); 

文字列に","に配列し、別々の各単語に参加し、それを保存します。 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 + ","); 
} 
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

関連する問題