2010-04-12 5 views
4

나는 형식을다른 문자열로 문자열을 분할하는 방법은 무엇입니까?

"TestString에 1 < ^> TestString에 2 < ^> 난에 의해 분할 할 테스트 String3

"< ^> "문자열입니다.

다음의 문자열을 가지고

다음 문을 사용하면 원하는 출력을 얻을 수 있습니다.

"TestString 1 <^> TestString 2 <^> Test String3" 
.Split("<^>".ToCharArray(), StringSplitOptions.RemoveEmptyEntries) 

그러나 내 문자열에 "<", ">"또는 "^"텍스트가있는 경우 위의 split 문도 마찬가지로 고려됩니다.

"< ^>"문자열 만 분리하는 방법은 어떻게됩니까?

답변

14

ToCharArray을 사용하면 "이 문자들 중 하나에 분할"이라고 말하는 것입니다. 받아 당신이 과부하를 사용해야합니다"<^>"순서에 분할하는 string[] :

string[] parts = yourValue.Split(new string[]{"<^>"}, StringSplitOptions.None); 

또는 C# 3에서

:

string[] parts = yourValue.Split(new[]{"<^>"}, StringSplitOptions.None); 
+1

String3 말을 단지 멋진 방법이 있나요? 방금 새로운 알 수없는 클래스를 찾기 시작했습니다. 하지만 오타가 맞지? :) –

+0

@ 벤자민 - 내가 소스 변수 이름으로 잘못 읽었습니다. (서식이 더 명확해질 수 있습니다 ...). 'yourValue'로 명확히 - 더 좋습니까? –

+0

물론. +1 어쨌든 나와 함께, Regex.Split 함께가는 것은 처음에는 어리 석다. –

1

다른 오버로드 Split 방법을 시도해보십시오

public string[] Split(
    string[] separator, 
    StringSplitOptions options 
) 

을 그래서 당신의 경우에는 다음과 같이 보일 것입니다 :

var result = 
    yourString.Split(new string[] {"<^>"},StringSplitOptions.RemoveEmptyEntries); 

희망 사항.

2

편집 : 다른 사람들이 이미 지적했듯이 String.Split에는 유스 케이스에 좋은 오버로드가 있습니다. 아래의 대답은 (작업에서와 마찬가지로) 여전히 정확하지만, 갈 길이 아닙니다.


이 string.Split 오버로드는 구분 기호 문자 배열을 사용하기 때문입니다. 각각은 문자열을 나눕니다. Regex.Split

Regex regex = new Regex(@"<\^>"); 
string[] substrings = regex.Split("TestString 1 <^> TestString 2 <^> Test String3"); 

그리고 - (!) 참고를 :

당신이 원하는

"<^>".ToCharArray() 

정말

new[]{'<', '^', '>'} 
+0

여기에 정규 표현식이 필요하지 않지만 시작 문자열 부호 ('<\^>')를 이스케이프해야한다. – Kobi

+0

@ 코비 : 고마워요. 나는 실제로 그것을 기대하지 않았고 나는 단지 문자 그룹에서 벗어날 필요가 있다고 생각했다. 그것을 시도하면 분명히 옳습니다. 게시물을 수정했습니다. –

+0

대개의 반대 문자 그룹은 일반적으로 문자를 이스케이프하지 않아도되는 한 곳입니다. – Kobi

관련 문제