gpt4 book ai didi

c# - 字符串替换未按预期工作

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:23 25 4
gpt4 key购买 nike

我的问题是:

我有一个正在读取的 .ini 文件,如下所示:

    StreamReader sr = new StreamReader(txtb_path.Text, Encoding.Default);

StringBuilder content = new StringBuilder();

// schreibt Zeile für Zeile auf den StringBuilder bis das Ende der Datei erreicht ist
while (!sr.EndOfStream)
content.AppendLine(sr.ReadLine());

// StringBuilder als String an die TextBox übergeben
this.textBox1.Text = content.ToString();

然后我应用以下正则表达式:

    string regex = @"^FensterGemerkt.+?\d+\.\d+\.\d+\,\ \d{2}:\d{2}:\d{2}\ :\ -{1}?\d+\,.*?$"; //@"^Fenster.*$";

RegexOptions options = RegexOptions.Multiline;

// search in
string input = content.ToString();
//txtb_count.Text = "anzahl zeilen: " + Convert.ToString(content.Capacity);

// run regex
MatchCollection matches = Regex.Matches(input, regex, options);

// MessageBox.Show(Convert.ToString(matches.Count));
txtb_count.Text = Convert.ToString(matches.Count);
string cleanup ="";

foreach (Match match in matches)
{
// clean the ini
cleanup = Regex.Replace(input, match.Value, "");

// Output all matches
textBox2.Text = textBox2.Text + "\n" + match.Value;
}

.ini 文件如下所示:

1
FensterGemerkt=12.11.2012, 10:42:37 : -32000,32744--31840,32768
Fenster=-32000,32744,160,24

2
FensterGemerkt=12.11.2012, 10:49:46 : 0,44-1024,768
Fenster=0,44,1024,724

我想要的是,如果正则表达式匹配第一个条目:

FensterGemerkt=12.11.2012, 10:42:37 : -32000,32744--31840,32768

...然后替换或删除它。

我的应用程序可以运行,但仅适用于 .ini 文件中的最后一个条目。我想我的 foreach 有问题,但我想不通。

最佳答案

有更好的方法可以做到这一点,但对您的问题最简单的答案是因为您正在重置 cleanup 以始终替换最后一个值。

尝试

    string cleanup =input;          

foreach (Match match in matches)
{
// clean the ini
cleanup = Regex.Replace(cleanup, match.Value, "");

// Output all matches
textBox2.Text = textBox2.Text + "\n" + match.Value;
}

更好的解决方案是使用 Linq:

  Regex regex=new Regex(@"^FensterGemerkt.+?\d+\.\d+\.\d+\,\ \d{2}:\d{2}:\d{2}\ :\ -{1}?\d+\,.*?$"; //@"^Fenster.*$",RegexOptions.MultiLine);
string cleanup=regex.Replace(input,string.Empty);
string[] matches=regex.Matches(input).OfType<Match>().Select(m=>m.Value).ToArray();
txtb_count.Text = Convert.ToString(matches.Length);
textBox2.Text = string.Join('\n',matches);

关于c# - 字符串替换未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13344550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com