我正在使用WinForms NET 2.0。我正在编写一个小函数来修剪某些选定文本的注释。它所做的是将所选文本分为单独的行,然后:C#删除字符串中的注释
- 如果行不包含注释,则会附加它。
- 如果该行包含一些文本后跟注释,则会附加修剪的注释。
- 如果该行以注释开头,则不会被追加。这是在if语句中。
- 如果该行为空白,则不会被追加。这也在if语句中。
这里是我的代码:
string[] lines = tb.SelectedText.Split('\n');
StringBuilder sb = new StringBuilder();
for (int i = 0; i < lines.Length; i++)
{
if ((lines[i].Trim() != string.Empty) || !Regex.IsMatch(lines[i], @"^\s*;(.*)$"))
{
if (Regex.IsMatch(lines[i], @"^(.*);(.*)$"))
sb.AppendLine(lines[i].Substring(0, lines[i].IndexOf(';')).Trim());
else
sb.AppendLine(lines[i]);
}
}
tb.SelectedText = sb.ToString();
的问题是,因为预期它不工作。假设,如果我有以下文字:
test ;test
test2 ;test
我希望它可以修剪的意见和删除空行,但没有,空行仍然存在。为什么是这样?我检查了这行是否为空,所以StringBuilder不应该追加行,如果它是空白的,但由于某种原因,它不会。
另外,由于某种原因,stringbuilder追加了一行。如何摆脱这一点?
在'tb.SelectedTExt'是'\ n'绝对唯一的换行符?例如,它不是'\ r \ n'? –
它总是\ n。 – david