2011-04-07 5 views
5

줄 바꿈을하는 올바른 방법과 혼동됩니다.줄의 문자열을 끊는 방법

나는 창문 라인을 깰 \ r \ n를 사용하는 것이 어딘가 읽을 수 있지만이 두 코드는이 같은

regex.split(sometext, "\r\n"); 
regex.split(sometext, "\n"); 

가 올바른 방법은 무엇입니까?이 표현은 항상 같은 생산 생산?

+0

먼저 - 이것은 C#이 아닙니다. 닷넷은'Regex.Split'을 가지고 있습니다. 다음으로, 더 자세한 정보를 제공 할 수 있습니다. 빈 줄을 유지해야합니까? 데이터의 출처는 어디입니까? – Kobi

+0

@Kobi 그는 메모리에서이 글을 썼을 수 있습니다. 잘못된 케이스를 설명 할 수 있습니다. – NKCSS

+0

@NKCSS - 질문을 할 때 매우 가난한 행위 ':)' – Kobi

답변

3

예를 들어, 당신은 리눅스에서 생성 된 입력 파일을 구문 분석 할 필요가/Windows/Mac에서 ASP.이것은 입력 문자열

"one\r\ntwo\n\n\nthree" 

에 대한

["one","two","three"] 

를 반환합니다

myString.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries) 

: 웹 사이트 NET) 당신이 빈 문자열에 대해 수행하지 않는, 내가 대신이 방법을 사용하는 것이 좋습니다 업데이트 : 빈 줄을 옮겨야 할 경우

을 사용할 수 있습니다.
myString.Replace("\r\n", "\n").Split("\n") 

"\ r \ n"및 "\ n"EOL 작성기 파일 모두에 적용됩니다.

+0

좋은 아이디어는 그것을 사용하려고합니다. 그리고 문자열에 이질적 인 결말이있는 경우 하나를 추가하여 invisible CR ... ("\ r \ n", "\ n") replace ("\ n" r "," "). split ("\ n ") – mjsr

12

사용

var myArray = sometext.Split(Environment.NewLine); 

Environment.NewLine 운영 체제에 대한 올바른 하나를 선택합니다. 데이터가 다른 시스템에서 작성된 경우이 작업은 실패합니다. 모든 시스템에서 작동하지만 일부 의도하지 않은 결과가있을 수 있습니다 뭔가

var myArray = sometext.Split(new[] {'\r', '\n'}, 
    StringSplitOptions.RemoveEmptyEntries); 

을 유발할 수있는 우려스러운 일이 캐리지 리턴에 모든 빈 라인과 분할을 제거하는 것입니다.

2

\ r은 carriage return 입니다. \ n은 newline입니다.

Windows는 기본적으로 \ r \ n을 사용합니다. (Environment.NewLine) .

[Environment.NewLine 부분을 명확히하기 위해 다시 작성]

당신이 당신의 플랫폼을 기반으로 올바른 문자를보고합니다 Environment.NewLine을 사용할 수 있습니다에 텍스트를 분할하는 올바른 문자를 얻을 수 있습니다.

+0

@NKCSS : 기본적으로 원래 질문에서 주어진 정보를 반복하고 질문 자체를 무시했습니다. 귀하의 답변을 개선해보십시오. – blubb

+0

@ Simon Stelling : 나는 그것을 주장한다. 질문은 분명히 그가 \ r \ n과 \ n의 차이를 알지 못한다고 말합니다. 또한 \ r \ n이 사용되는 이유에 대해 설명하고 (Windows 기본값) 여기에서 Environment.NewLine을 사용하여 제안하려고했습니다. – NKCSS

+0

@ Simon Stelling - 가혹한 평가입니다. 대답은 향상 될 수 있지만 나는 그것이 downvote (누구든간에) 자격이 있다고 생각하지 않습니다. –

0

다른 답변에서 언급 된 이유 때문에 EDIT에서 말하는 것만 수행하십시오. 두 그러나 개인적으로 내가 사용하는 거라고, 잘 있습니다

regex.split(sometext, "\n"); 

편집 :

사용 Environment.Newline 다른 답변에 제안.

+0

Environment.NewLind가는 방법입니다 undid; 당신의 예제는 어떤 시나리오에서는 텍스트를 \ r char로 남겨두기 때문에 바람직하지 않습니다. – NKCSS

0
regex.split(sometext, "\r\n"); 

이 방법입니다.

이유는 "\ n"이 (가) "\ r"다음에 나오는 문자열을 분리하기 때문에 같은 결과가 나타나는 것입니다. 따라서 "\ r"이라는 하위 문자열이 있는데, 16 진수 편집기를 사용하여주의 깊게 살펴 보지 않으면 명확하지 않습니다.

내가 대신 "\ r에 \ n"의 Environment.NewLine을 사용하는 것이 좋습니다이라고 말했다

당신이 (모든 플랫폼에 대한 새로운 줄 문자를 지원하려면

관련 문제