C#で文字列の空行を削除する方法は? C#(winforms)でテキストファイルを生成していますが、何らかの理由で空の行があります。文字列が生成された後にそれらを削除するにはどうすればよいですか( StringBuilder および TextWrite を使用)。
テキストファイルの例:
THIS IS A LINE
THIS IS ANOTHER LINE AFTER SOME EMPTY LINES!
ありがとう。
空白のみを含む行も削除する場合は、使用します
resultString = Regex.Replace(subjectString, @"^\s+$[\r\n]*", string.Empty, RegexOptions.Multiline);
^\s+$
は、タブまたはスペースのみを含む行を含め、最初の空白行から最後まで(空行の連続ブロック内)をすべて削除します。
[\r\n]*
は最後のCRLFを削除します(またはLFのみ。これは.NET正規表現エンジンが$
の間\r
および\n
、おかしなことに十分です)。
@Tim Pietzcker-私のために働いていません。少し変更する必要がありますが、thx!
ええC#正規表現..もう一度変更する必要がありましたが、これはうまく機能しています。
private string RemoveEmptyLines(string lines)
{
return Regex.Replace(lines, @"^\s*$\n|\r", string.Empty, RegexOptions.Multiline).TrimEnd();
}
String.Replace("\n\n", "\n");
を試すことができます
これを試して
Regex.Replace(subjectString, @"^\r?\n?$", "", RegexOptions.Multiline);
private static string RemoveEmptyLines(string text)
{
var lines = text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
var sb = new StringBuilder(text.Length);
foreach (var line in lines)
{
sb.AppendLine(line);
}
return sb.ToString();
}
private string remove_space(string st)
{
String final = "";
char[] b = new char[] { '\r', '\n' };
String[] lines = st.Split(b, StringSplitOptions.RemoveEmptyEntries);
foreach (String s in lines)
{
if (!String.IsNullOrWhiteSpace(s))
{
final += s;
final += Environment.NewLine;
}
}
return final;
}
Evgeny Sobolevのコードに基づいて、この拡張メソッドを作成しました。これは、TrimEnd(TrimNewLineChars)を使用して最後の(廃止された)改行もトリミングします。
public static class StringExtensions
{
private static readonly char[] TrimNewLineChars = Environment.NewLine.ToCharArray();
public static string RemoveEmptyLines(this string str)
{
if (str == null)
{
return null;
}
var lines = str.Split(TrimNewLineChars, StringSplitOptions.RemoveEmptyEntries);
var stringBuilder = new StringBuilder(str.Length);
foreach (var line in lines)
{
stringBuilder.AppendLine(line);
}
return stringBuilder.ToString().TrimEnd(TrimNewLineChars);
}
}
あなたが私のようで、上記の行のどれもがyaのために機能しなかった場合、文字列が空であるかどうかを伝えることができる関数を探しました(そうであれば、私がやったように、それを破壊または削除できます)
// if string "myText" is empty then
if (string.IsNullOrEmpty("myText")){
//delete/disable string
}