string.split-여러 문자 구분 기호로


151

C #에서 구분 기호가 "] ["인 문자열을 분할하는 데 문제가 있습니다.

예를 들어 문자열 "abc] [rfd] [5] [,] [."

포함하는 배열을 생성해야합니다.
ABC는
RFD
5
,
.

그러나 RegEx를 사용해도 구분 기호를 분리 할 수 ​​없습니다.

편집 : 본질적으로 정규 표현식이 필요 없이이 문제를 해결하고 싶었습니다. 내가 받아들이는 해결책은 다음과 같습니다.

string Delimiter = "][";  
var Result[] = StringToSplit.Split(new[] { Delimiter }, StringSplitOptions.None);

이 분할 질문을 해결할 수있어서 기쁩니다.

c#  split 

실패한 코드를 알려주십시오.
— Konrad Rudolph

또한 게시 한 내용과 게시하려는 내용 외에 게시 한 내용을 게시하십시오.
— Lasse V. Karlsen

답변:


268

사용법 string.Split과 Regex사용법을 모두 표시하려면 다음을 수행하십시오.

string input = "abc][rfd][5][,][.";
string[] parts1 = input.Split(new string[] { "][" }, StringSplitOptions.None);
string[] parts2 = Regex.Split(input, @"\]\[");

5
또는 귀하의 최소 코드가 나와 같은 경우 : 'var parts1 = input.Split (new [] { "] ["}, StringSplitOptions.None);'
— Paul Grimshaw

2
StringSplitOptions.None오버 를 제공하면 어떤 이점이 input.Split(new string[] { "][" })있습니까?
— seebiscuit

1
이것은 두 문자가 모두 맞다는 것을 전제로합니다. "["또는 "]"로 나누려면 어떻게해야합니까? 지금까지의 테스트에서 나는 다른 이야기라고 생각합니다.
— C4d

감사합니다, 작동합니다 !!
— Kumar

3
@ C4u String.Split("[]".ToCharArray())는 [와]를 따로 분리합니다. 예를 들면 다음과 같습니다. Hello [World] Its [Me! 안녕하세요, World, Its, Me!
— Ma Dude

36
string tests = "abc][rfd][5][,][.";
string[] reslts = tests.Split(new char[] { ']', '[' }, StringSplitOptions.RemoveEmptyEntries);

8
이 접근법은 그가] [조합에 나타나지 않을 때에도]와 []마다 분할하는 수단을 가정합니다.
— Lasse V. Karlsen

2
문자열의 과부하 .Split은 그것을 두 개의 분리 구분 기호로 취급합니다. 나머지는 버리고 있습니다. 문자열을 구분 기호 (실제로 문자열 배열)로 허용하는 오버로드가 있으므로 빈 값을 제거 할 필요가 없습니다 (즉 , 데이터에 올 바르면 빈 값을 찾을 수 있음 )
— Marc Gravell

귀하의] 가정은 [정확합니다. 그는 명시하지 않았기 때문에 그의 모범에 도움이 될만한 것을주었습니다. 그가 건너 뛰기를 원하지 않으면 효과가 있습니다. 그러나 자세한 내용은없이, 우리는 결코 알지 못할 것이다
— SwDevMan81

그것이 내가 찾던 것입니다. 문제에서 그것은 간단한 문제 였지만 이것은 고급 답변입니다.
— Bitterblue

바로 내가 찾던 것이 었습니다. 그러나 정답은 나에게도 뉴스입니다. Marc가 설명한 것처럼 둘 이상의 캐릭터로 나눌 수 있다는 것을 몰랐습니다. 구문은 매우 쓰레기입니다.
— Piotr Kula 2016 년

13

다른 옵션 :

문자열 구분 기호를 단일 문자로 바꾸고 해당 문자를 분리하십시오.

string input = "abc][rfd][5][,][.";
string[] parts1 = input.Replace("][","-").Split('-');

1
이것이 제가하는 것입니다. 플랫폼 별 트릭에 대해 걱정할 필요없이 모든 플랫폼에서 작동하는 표준화 된 일반적인 방법을 제공합니다.
— David Betz

5
좋은 생각이 아닙니다. 고려하십시오 : string input = "abc][rf-d][5". "rf-d"의 "-"는 분리 문자로 잡 힙니다. 대신 위의 답변을 참조하십시오.
— Gilad Barner

이 경우 ~ 또는`와 같은 문자가 아닌 문자 또는 ¿ 또는 ◙와 같은 키보드가 아닌 문자로 대체하여 분할하십시오.
— seabass2020

1
나는 명확하고 강력하며 정상화 될 수있는 경우 솔루션을 좋아합니다. 내 사용법Dim Levels As New List(Of String)(newSelectedTask.Replace(LevelDelimter, Chr(13)).Split(Chr(13)))
— Nasenbaer

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