C #의 문자열 끝에서 캐리지 리턴 및 줄 바꾸기 제거


113

문자열 끝에서 캐리지 리턴 문자 (\r)와 줄 바꾸기 문자를 제거하려면 어떻게합니까 (\n)?

답변:


198

이것은의 끝에서 캐리지 리턴과 개행의 조합을 제거합니다 s.

s = s.TrimEnd(new char[] { '\r', '\n' });

편집 : 또는 JP가 친절하게 지적했듯이 더 간결하게 철자를 다음과 같이 지정할 수 있습니다.

s = s.TrimEnd('\r', '\n');

10
TrimEnd 선언에서 params 키워드를 기록해두면 배열 대신 문자의 여러 인스턴스를 전달할 수 있습니다. msdn.microsoft.com/en-us/library/w5zay9db(VS.71).aspx
JP Alioto

3
이것은 어떻습니까 : s = s.TrimEnd (System.Environment.NewLine.ToCharArray ());
Ε Г И І И О

4
저는 v1.0이 나온 이후 (10 년 전)부터 c #을 작성하고 있습니다. 이제 TrimEnd에 대해 알려주세요. 도!
s15199d

7
흥미롭게도 정말로 필요한 것은 s = s.TrimEnd()문서에서 말했듯 이 trimChars가 null이거나 빈 배열이면 유니 코드 공백 문자가 대신 제거됩니다. - 참조 String.TrimEnd
스튜어트 목재

@StuartWood : ... Avik이 요청한 것이 아닙니다. 그는 특별히 요청 '\r''\n'및 아무것도 아닌 공백 문자 ' '예를 들어.
RichieHindle 2013 년

31

이것은 작동합니다 ...

var tst = "12345\n\n\r\n\r\r";
var res = tst.TrimEnd( '\r', '\n' );

19

여러 플랫폼을 사용하는 경우이 방법을 사용하는 것이 더 안전합니다.

value.TrimEnd(System.Environment.NewLine.ToCharArray());

다른 줄 바꿈 및 캐리지 리턴 문자를 설명합니다.


JP의 방법은-- tst.TrimEnd( '\r', '\n' )주요 EOL이 [현재] \rand의 다른 조합 일 뿐이므로 실제로 "안전" \n하지만 alexw가 "올바른"대답입니다. CLR이이 플랫폼의 개행 문자에 어떤 문자가 있는지 알려줍니다. EOL은 항상 0D와 0A의 콤보가 아니 었습니다
ruffin 2014-04-26

내가 사용하는 데 사용 Environment.NewLine하지만, 핸들 인스턴스에 보이지 않았다 \r없는 존재 \n. TrimEnd('r','\n')이 경우 더 신뢰할 수있는 것 같습니다.
ᴍᴀᴛᴛ ʙᴀᴋᴇʀ 2014 년

2
이것은 실제로 크로스 플랫폼 문제 일 수 있으며 dec은 시스템 환경이 말하는 것과 관계없이 \ r \ n 둘 다를 구체적으로 제거해야합니다.
Andrew Hill

12
String temp = s.Replace("\r\n","").Trim();

s원래 문자열입니다. (대문자 참고)


11
또한 : 1) 문자열 중간에서 \ r \ n 제거, 2) 문자열 시작 부분에서 공백 문자 제거, 3) 문자열 끝에서 공백 문자 제거.
RichieHindle

사실, 나는 끝에 하나의 / r / n 만 가정했습니다. 원래 게시물에는 언급되지 않았습니다. 나는 warrents가 -1 표를 받는지 확실하지 않습니다
Crash893

내가 찾던 바로 그것. 감사.
NotMe

4
사용 replace()trim()하지 과잉 때 TrimEnd()혼자 일을 할 수있는, 또는 내가 뭔가를 놓친 게 뭐죠?
ᴍᴀᴛᴛ ʙᴀᴋᴇʀ 2014 년

좋은 제안 @MattBaker
Crash893

8
s.TrimEnd();

위의 내용은 문자열 끝에서 '\ r \ n'을 제거하는 데 필요한 전부입니다.

upvoted 답변이 잘못된 것 같습니다. 첫째, 내가이 일을했다면 나는 s.TrimEnd ( '\ r은', '\ n'을 참조)은 제거 것으로 예상, 둘째, 시도 할 때 작동하지 않았다 중 하나 는 '\ R'또는 '\ n'을 , 그래서 나는 그것을 두 번 실행해야 할 것입니다-한 번은 '\ n'이 끝났을 때, 두 번째는 '\ r'이 끝났을 때 (이제 '\ n'가 제거되었습니다) .


4

항상 단일 CRLF가있는 경우 :

myString = myString.Substring(0, myString.Length - 2);

있을 수도 있고 없을 수도있는 경우 :

Regex re = new Regex("\r\n$");
re.Replace(myString, "");

이 두 가지 모두 (설계 상) 최대 단일 CRLF를 제거합니다. 성능을 위해 정규식을 캐시하십시오.


4

우리 VBers :

TrimEnd(New Char() {ControlChars.Cr, ControlChars.Lf})

3
string k = "This is my\r\nugly string. I want\r\nto change this. Please \r\n help!";
k = System.Text.RegularExpressions.Regex.Replace(k, @"\r\n+", " ");

3

이것은 너무 쉬웠습니다. 저에게는 특정 이메일 항목을 필터링하고 있습니다. 나만의 맞춤 이메일 정크 필터를 작성하고 있습니다. 문자열에 \ r 및 / 또는 \ n을 사용하면 필터링하는 대신 모든 항목을 지 웠습니다.

그래서 방금 filter = filter.Remove ( '\ n') 및 filter = filter.Remove ( '\ r')했습니다. 최종 사용자가 메모장을 사용하여 파일을 직접 편집 할 수 있도록 필터를 만들고 있으므로 이러한 문자가 어디에 삽입 될 수 있는지 알 수 없습니다. 문자열의 시작 또는 끝이 아닐 수 있습니다. 따라서 모두 제거하면됩니다.

다른 항목은 모두 작동하지만 제거가 가장 쉬울 수 있습니까?

이 게시물에서 Regex에 대해 훨씬 더 많이 배웠습니다. 여기서 사용하면 꽤 멋진 작업입니다.


외모는 그냥 할 수 좋아filter = filter.Remove('\n').Remove('\r');
존 손더스

2

많은 지우기 레벨을 사용합니다.

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, "");

이제 깨끗한 한 행이 있습니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.