使用Regex从c#中的单词中删除#
本文关键字:单词中 删除 Regex 使用 | 更新日期: 2023-09-27 18:01:46
i想读取一个带有"#"的文件,我想从words
中删除它输入文件
a, 00001740, 0.125, 0, able#1
a, 00001740, 0.125, 0, play#2
a, 00002098, 0, 0.75, unable#1
我希望在以下格式中没有#
输出应该是
a, 00001740, 0.125, 0, able
a, 00001740, 0 .125, 0, play
a, 00002098, 0, 0.75, unable
我写了下面的代码
TextWriter tw = new StreamWriter("D:''output.txt");
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text != "")
{
StreamReader reader = new StreamReader("D:''input.txt");
string line;
while ((line = reader.ReadLine()) != null)
{
Regex expression = new Regex(@"'b'w+(?=#'d*'b)");
var results = expression.Matches(reader.ToString())
foreach (Match match in results)
{
tw.Write(match);
}
tw.Write("'r'n");
}
tw.Close();
reader.Close();
}
textBox1.Text = "";
}
}
use Regex.Replace()
string result = Regex.Replace(input, "#.*", "");
- Regex.Replace ()
如果您不想读取和缓存文件的整个内容,那么您可能希望将其写入其他文件,因为您在读取原始文件的内容时重写了文件。
同样,考虑这个例子:
int index = line.IndexOf("#");
if (index != -1)
{
line = line.Substring(0, index - 1);
}
这里你不需要处理正则表达式,因此这将运行得更快。
你的整个代码可以用3行代替:
string txt = File.ReadAllText("D:''input.txt");
txt = Regex.Replace(txt, "#.*?('r'n|'n|$)", "$1");
File.WriteAllText("D:''output.txt", txt);
Regex替换可能是这里最好的选择。
File.WriteAllLines("c:''output.txt", File.ReadAllLines("c:''input.txt").Select(line => Regex.Replace(line, "#.*","")));
或者TakeWhile
File.WriteAllLines("c:''test24.txt", File.ReadAllLines("c:''test.txt").Select(line => new string(line.TakeWhile(c => c != '#').ToArray())));
按照我的评论试试:
string s = "a, 00001740, 0.125, 0, able#1";
string m = Regex.Replace(s, @"#'d$", "");
//for more than one digit @"#'d+$"
Console.WriteLine(m);
Console.ReadLine();