답변:
이것은의 끝에서 캐리지 리턴과 개행의 조합을 제거합니다 s
.
s = s.TrimEnd(new char[] { '\r', '\n' });
편집 : 또는 JP가 친절하게 지적했듯이 더 간결하게 철자를 다음과 같이 지정할 수 있습니다.
s = s.TrimEnd('\r', '\n');
s = s.TrimEnd()
문서에서 말했듯 이 trimChars가 null이거나 빈 배열이면 유니 코드 공백 문자가 대신 제거됩니다. - 참조 String.TrimEnd
'\r'
및 '\n'
및 아무것도 아닌 공백 문자 ' '
예를 들어.
여러 플랫폼을 사용하는 경우이 방법을 사용하는 것이 더 안전합니다.
value.TrimEnd(System.Environment.NewLine.ToCharArray());
다른 줄 바꿈 및 캐리지 리턴 문자를 설명합니다.
tst.TrimEnd( '\r', '\n' )
주요 EOL이 [현재] \r
and의 다른 조합 일 뿐이므로 실제로 "안전" \n
하지만 alexw가 "올바른"대답입니다. CLR이이 플랫폼의 개행 문자에 어떤 문자가 있는지 알려줍니다. EOL은 항상 0D와 0A의 콤보가 아니 었습니다
Environment.NewLine
하지만, 핸들 인스턴스에 보이지 않았다 \r
없는 존재 \n
. TrimEnd('r','\n')
이 경우 더 신뢰할 수있는 것 같습니다.
String temp = s.Replace("\r\n","").Trim();
s
원래 문자열입니다. (대문자 참고)
replace()
후 trim()
하지 과잉 때 TrimEnd()
혼자 일을 할 수있는, 또는 내가 뭔가를 놓친 게 뭐죠?
이것은 너무 쉬웠습니다. 저에게는 특정 이메일 항목을 필터링하고 있습니다. 나만의 맞춤 이메일 정크 필터를 작성하고 있습니다. 문자열에 \ r 및 / 또는 \ n을 사용하면 필터링하는 대신 모든 항목을 지 웠습니다.
그래서 방금 filter = filter.Remove ( '\ n') 및 filter = filter.Remove ( '\ r')했습니다. 최종 사용자가 메모장을 사용하여 파일을 직접 편집 할 수 있도록 필터를 만들고 있으므로 이러한 문자가 어디에 삽입 될 수 있는지 알 수 없습니다. 문자열의 시작 또는 끝이 아닐 수 있습니다. 따라서 모두 제거하면됩니다.
다른 항목은 모두 작동하지만 제거가 가장 쉬울 수 있습니까?
이 게시물에서 Regex에 대해 훨씬 더 많이 배웠습니다. 여기서 사용하면 꽤 멋진 작업입니다.
filter = filter.Remove('\n').Remove('\r');
많은 지우기 레벨을 사용합니다.
String donen = "lots of stupid whitespaces and new lines and others..."
//Remove multilines
donen = Regex.Replace(donen, @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
//remove multi whitespaces
RegexOptions options = RegexOptions.None;
Regex regex = new Regex("[ ]{2,}", options);
donen = regex.Replace(donen, " ");
//remove tabs
char tab = '\u0009';
donen = donen.Replace(tab.ToString(), "");
//remove endoffile newlines
donen = donen.TrimEnd('\r', '\n');
//to be sure erase new lines again from another perspective
donen.Replace(Environment.NewLine, "");
이제 깨끗한 한 행이 있습니다.