私は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