답변:
다음은 나를 위해 작동합니다.
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());
다소 답이 아니지만 문자열에서 줄 바꿈을 제거하는 가장 쉬운 방법은 줄 바꿈을 처음부터 자신의 코드에서 볼 수 없도록하는 것입니다. 즉, 개행을 제거하는 기본 함수를 사용합니다. 많은 스트림 및 파일 / 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);
}