C# 如果line after=line before,则从文本框中删除重复项
我有一个文本框,如果line before=line after,我想删除行 我有这样的文字:C# 如果line after=line before,则从文本框中删除重复项,c#,textbox,duplicates,C#,Textbox,Duplicates,我有一个文本框,如果line before=line after,我想删除行 我有这样的文字: Ab cd ... Ef Gss ... EE oo ... EE oo ... // delete this line qq ss ff ok ee .. 我尝试了许多代码,但它删除了所有相同的行。我只想删除下一行。空行应该一直存在 我使用的代码: richTextBox1.Text = string.Join( Environment.NewLine, richTextBox1.Lines.
Ab cd ...
Ef Gss ...
EE oo ...
EE oo ... // delete this line
qq ss ff
ok ee ..
我尝试了许多代码,但它删除了所有相同的行。我只想删除下一行。空行应该一直存在
我使用的代码:
richTextBox1.Text = string.Join( Environment.NewLine, richTextBox1.Lines.Distinct());
或:
for(int-tx=0;tx
试试这个:
textBox1.Text = string.Join(Environment.NewLine, textBox1.Lines.Distinct());
试试这个-
string[] temp = richTextBox1.Lines;
for (int i= 0; i< richTextBox1.Lines.Length - 1; i++)
{
if (richTextBox1.Lines[i] == richTextBox1.Lines[i+ 1]
&& rt.Lines[i] != String.Empty)
{
temp[i] = null;
}
}
richTextBox1.Lines = temp.Where(a => a != null).ToArray();
string[]temp=richTextBox1.行;
对于(int i=0;ia!=null).ToArray();
您发布的代码看起来可以删除下一行,但您正在删除文本其余部分中与第一个循环中的行相等的所有行。
所以在你的代码中
xyz//line0
abc//line1
abc//line2
//line3
hjk//line4
abc//line5
行:2,5将被删除,如果我理解正确,您只想删除行2
我的例子
line1 text //line index 0
abc //line index 1
abc//delete this line, index 2
abc//delete this line, index 3
第一步。行索引2已删除
line1 text //line index 0
abc //line index 1
//deleted abc line, previous index 2,
abc//delete this line, index 2, previous index 3
但删除行索引2后的tx将增加,因此您将位于基本文本行3
所以我们需要添加tx--
我认为收益率操作符解决了这个问题:
public static IEnumerable<String> GetDistinctLines(IEnumerable<String> lines)
{
string currentLine = null;
foreach (var line in lines)
{
if (line != currentLine)
{
currentLine = line;
yield return currentLine;
}
}
}
Text=string.Join(Environment.NewLine,richTextBox1.Lines.Distinct(l=>l!=string.Empty))@哈姆雷特·哈科比扬:我有个错误:无法转换lambda表达式。我刚刚用你的文本和作品测试了我的答案。只需更换控制装置name@CarlosLande:你所说的替换控件名是什么意思?我想这会删除“所有”重复项而不是“所有下一行”重复项将答案命名为我的答案,请参见上文您的答案不是为我编译的。无效的lambda表达式请参见1.code,与我的代码相同,只是用RichTextBox1更改了textBox1您是对的,除非我没有读那行代码,只是大代码。对不起,是我的错P很高兴你得到了正确的答案谢谢,我怎样才能把这几行也删掉呢?我的意思是删除并删除完整的重复行?我们正在重置richTextBox的lines属性的最后一行将从richTextBox中删除这些行。
for (int tx = 0; tx < richTextBox1.Text.Length - 1; tx++)
{
if (richTextBox1.Lines[tx] == richTextBox1.Lines[tx+1])
{
// something like richTextBox1.Lines[tx+1].RemoveAt(tx);
tx--;
}
}
}
if(!String.IsNullOrEmpty(richTextBox1.Lines[tx]) &&richTextBox1.Lines[tx] == richTextBox1.Lines[tx+1])
public static IEnumerable<String> GetDistinctLines(IEnumerable<String> lines)
{
string currentLine = null;
foreach (var line in lines)
{
if (line != currentLine)
{
currentLine = line;
yield return currentLine;
}
}
}
richTextBox1.Lines = GetDistinctLines(richTextBox1.Lines).ToArray();