C#에서 문자열의 새 줄을 잘라내는 가장 쉬운 방법은 무엇입니까?
_content가 NewLine 문자로 끝나지 않는지 확인합니다.
_content = sb.ToString().Trim(new char[] { Environment.NewLine });
그러나 Trim은 문자열 집합에 대한 오버로드 매개 변수가 없고 문자만 있기 때문에 위 코드가 작동하지 않습니다.
Enivronment를 제거할 수 있는 가장 간단한 원라이너는 무엇입니까?문자열 끝에서 줄 바꿈?
다음은 저에게 도움이 됩니다.
sb.ToString().TrimEnd( '\r', '\n' );
또는
sb.ToString().TrimEnd( Environment.NewLine.ToCharArray());
.Trim()
제거\r\n
저를 위해 (사용).NET 4.0).
어때요?
public static string TrimNewLines(string text)
{
while (text.EndsWith(Environment.NewLine))
{
text = text.Substring(0, text.Length - Environment.NewLine.Length);
}
return text;
}
새로운 라인이 여러 개 있으면 다소 비효율적이지만, 효과가 있을 것입니다.
또는 트리밍이 괜찮다면 (say)"\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")이 뒤따르는 선 피드("\r\n")로 정의됩니다.반환되는 문자열에 종료 캐리지 반환 또는 라인 피드가 포함되어 있지 않습니다.
그래서 다음과 같은 것들이 그 속임수를 쓸 것입니다.
_content = new StringReader(sb.ToString()).ReadLine();
어때
_content = sb.ToString().Trim(Environment.NewLine.ToCharArray());
_content = sb.TrimEnd(Environment.NewLine.ToCharArray());
이렇게 하면 당연히 "\r\r\r"뿐만 아니라 "\n\n\n" 및 기타 조합이 제거됩니다.그리고 NewLine이 "\n\r"이 아닌 "환경"에서 이상한 행동을 보일 수 있습니다 :-)
하지만 이것을 사용할 수 있다면 문자열 끝에 있는 줄 문자를 제거하는 가장 효과적인 방법이라고 생각합니다.
다음은 어떻습니까?
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 환경에서 문자열의 양쪽 끝에서 줄 피드와 공백을 가져와야 했습니다.좀 더 복잡한 다양한 옵션을 선택한 후 트림()만 사용하여 문제를 해결했습니다. 다음 테스트를 잘 통과했습니다.
[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);
}
언급URL : https://stackoverflow.com/questions/1038031/what-is-the-easiest-way-in-c-sharp-to-trim-a-newline-off-of-a-string
'itsource' 카테고리의 다른 글
매개 변수에서 사용할 때? (0) | 2023.09.04 |
---|---|
런타임 오류:이 이벤트 루프가 python에서 이미 실행되고 있습니다. (0) | 2023.09.04 |
보기에서 CURRENT_ROLE 사용 (0) | 2023.09.04 |
jQuery: 부모, 부모 ID를 가져오시겠습니까? (0) | 2023.09.04 |
동일한 데이터 유형에도 불구하고 "외부 키 제약 조건이 잘못 형성됨" (0) | 2023.09.04 |