我编写了一个代码,用于使用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();
}
答案 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.Matches
。 Matches
方法在指定的输入字符串中搜索所有正则表达式。
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;
}