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.SplitRegex사용법을 모두 표시하려면 다음을 수행하십시오.

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.