_contentが改行文字で終わっていないことを確認したい:
_content = sb.ToString().Trim(new char[] { Environment.NewLine });
ただし、Trimには文字列のコレクションのオーバーロードされたパラメーターはなく、文字のみがあるため、上記のコードは機能しません。
文字列の末尾からEnivronment.Newlineを削除する最も簡単なワンライナーは何ですか?
_contentが改行文字で終わっていないことを確認したい:
_content = sb.ToString().Trim(new char[] { Environment.NewLine });
ただし、Trimには文字列のコレクションのオーバーロードされたパラメーターはなく、文字のみがあるため、上記のコードは機能しません。
文字列の末尾からEnivronment.Newlineを削除する最も簡単なワンライナーは何ですか?
回答:
次は私のために働きます。
sb.ToString().TrimEnd( '\r', '\n' );
または
sb.ToString().TrimEnd( Environment.NewLine.ToCharArray());
どうですか:
public static string TrimNewLines(string text)
{
while (text.EndsWith(Environment.NewLine))
{
text = text.Substring(0, text.Length - Environment.NewLine.Length);
}
return text;
}
複数の改行がある場合は多少非効率的ですが、機能します。
また、あなたはそれが(例えば)トリミング気にしない場合"\r\r\r\r"
や"\n\n\n\n"
、むしろ単により"\r\n\r\n\r\n"
:
// No need to create a new array each time
private static readonly char[] NewLineChars = Environment.NewLine.ToCharArray();
public static string TrimNewLines(string text)
{
return text.TrimEnd(NewLineChars);
}
フレームワークを使用します。ReadLine()メソッドには、次のような記述があります。
行は、一連の文字の後にラインフィード( "\ n")、キャリッジリターン( "\ r")、またはキャリッジリターンの直後にラインフィード( "\ r \ n")が続くものとして定義されます。返される文字列には、終了の改行または改行は含まれません。
だから、以下はトリックを行います
_content = new StringReader(sb.ToString()).ReadLine();
どうですか
_content = sb.ToString().Trim(Environment.NewLine.ToCharArray());
どうですか:
string text = sb.ToString().TrimEnd(null)
これにより、文字列の末尾からすべての空白文字が取得されます。改行以外の空白を保持したい場合にのみ問題になります。
やや無回答ですが、文字列から改行を削除する最も簡単な方法は、最初に文字列に改行がないようにすることです。自分のコードから改行されないようにすることです。つまり、改行を削除するネイティブ関数を使用します。多くのストリームおよびファイル/ ioメソッドは、行ごとに出力を要求する場合、改行を含みませんが、何かをSystem.IO.BufferedStream
。
のようなものSystem.IO.File.ReadAllLines
は、System.IO.File.ReadAllText
ほとんどのReadLine
場合の代わりに使用できRead
、適切なタイプのストリーム(例:)を使用して作業する場合の代わりに使用できますBufferedStream
。
Markusが指摘したように、TrimEndは現在この仕事をしています。Windows Phone 7.8環境で文字列の両端から改行と空白を取得する必要がありました。さまざまなより複雑なオプションを追跡した後、私の問題はTrim()のみを使用して解決されました-次のテストにうまく合格しました
[TestMethod]
[Description("TrimNewLines tests")]
public void Test_TrimNewLines()
{
Test_TrimNewLines_runTest("\n\r testi \n\r", "testi");
Test_TrimNewLines_runTest("\r testi \r", "testi");
Test_TrimNewLines_runTest("\n testi \n", "testi");
Test_TrimNewLines_runTest("\r\r\r\r\n\r testi \r\r\r\r \n\r", "testi");
Test_TrimNewLines_runTest("\n\r \n\n\n\n testi äål., \n\r", "testi äål.,");
Test_TrimNewLines_runTest("\n\n\n\n testi ja testi \n\r\n\n\n\n", "testi ja testi");
Test_TrimNewLines_runTest("", "");
Test_TrimNewLines_runTest("\n\r\n\n\r\n", "");
Test_TrimNewLines_runTest("\n\r \n\n \n\n", "");
}
private static void Test_TrimNewLines_runTest(string _before, string _expected)
{
string _response = _before.Trim();
Assert.IsTrue(_expected == _response, "string '" + _before + "' was translated to '" + _response + "' - should have been '" + _expected + "'");
}
テキスト全体の改行を削除する必要がありました。だから私は使用しました:
while (text.Contains(Environment.NewLine))
{
text = text.Substring(0, text.Length - Environment.NewLine.Length);
}