2010-04-15 5 views
4

저는 C#의 분할 문자열 방법에 익숙하지 않았습니다. 둘 이상의 char 함수로 분할이 어떻게 이루어 졌는지 궁금합니다.C#에서이 문자열을 분할하는 방법은 무엇입니까?

그리고이 문자열을 정규식을 사용하여 아래로 분할하려고 시도했지만 방금 좌절감에 처했습니다. 누구든지 나를 도울 수 있습니까?

은 기본적으로 나중에

aa 
aa 
bb 
dd 

a2a 
a2a 
b2b 
dd 

덕분에 다음

aa**aa**bb**dd 
a2a**a2a**b2b**dd 

과에

aa**aa**bb**dd^__^a2a**a2a**b2b**dd^__^ 

아래로 아래의 문자열을 분할 할!

답변

10

string[]을 사용하여 분할 할 수 있습니다. overloads이 여러 개 있습니다.

string[] splitBy = new string[] {"^__^"}; 
string[] result = "aa*aa*bb*dd^__^a2a*a2a*b2b*dd^__^".Split(splitBy, StringSplitOptions.None); 

// result[0] = "aa*aa*bb*dd", result[1] = "a2a*a2a*b2b*dd" 
7

당신은 this overload 찾고 :

someString.Split(new string[] { "^__^" }, StringSplitOptions.None); 

String.Split(params string[] separators)가없는 이유를 이해 적이 없어요. 당신의 예에서이 것,

string.Join("**",yourString.Split("^__")).Split("**") 
yourString.Replace("^__","**").Split("**") 

당신은 마지막 항목을 확인해야합니다 : 이들의

public static string[] Split(this string str, params string[] separators) { 
    return str.Split(separators, StringSplitOptions.None); 
} 
2
var split = @"aa**aa**bb**dd^__^a2a**a2a**b2b**dd^__^".Split(new string[] {"^__^"}, StringSplitOptions.RemoveEmptyEntries); 

foreach(var s in split){ 
    var split2 = s.Split(new string[] {"**"}, StringSplitOptions.RemoveEmptyEntries); 
} 
0

방법에 대한 하나
그러나, 당신은 확장 메서드로 쓸 수 있습니다 빈 문자열이어야한다.

+0

이 컴파일되지 않습니다. – SLaks

0

이미 언급 한 것처럼 문자열 배열을 Split 메서드에 전달할 수 있습니다. 여기에 코드 후 질문에 최근 편집을 기반으로 보일 수있는 방법은 다음과 같습니다이 원하는 값을 포함하는 당신에게 IEnumerable<IEnumerable<string>>을 줄 것이다

string x = "aa**aa**bb**dd^__^a2a**a2a**b2b**dd^__^"; 
string[] y = x.Split(new string[]{"^__^"},StringSplitOptions.None); 
string[] z = y[0].Split(new string[]{"**"},StringSplitOptions.None); 
1

. 작동하는 가변 배열

0

VB.NET 버전에 대한 S '의 당신이 List<List<string>> 또는 ToArray() 원한다면 거기에의'의

string[] split1 = new[] { "^__^" }; 
string[] split2 = new[] { "**" }; 
StringSplitOptions op = StringSplitOptions.RemoveEmptyEntries; 
var vals = s.Split(split1,op).Select(p => p.Split(split2,op).Cast<string>()); 

당신은 또한 몇 가지 ToList()을 던질 수 있습니다.

모듈 Module1의

Sub Main() 
    Dim s As String = "aa**aa**bb**dd^__^a2a**a2a**b2b**dd^__^" 
    Dim delimit As Char() = New Char() {"*"c, "^"c, "_"c} 

    Dim split As String() = s.Split(delimit, StringSplitOptions.RemoveEmptyEntries) 
    Dim c As Integer = 0 
    For Each t As String In split 
     c += 1 
     Console.WriteLine(String.Format("{0}: {1}", c, t)) 
    Next 

End Sub 
+0

이것은 그가하려고하는 것이 아닙니다. – SLaks

관련 문제