2011-12-07 4 views
0

나는 내 문제에 대한 많은 연구를 해왔고 좋은 해결책을 찾지 못했습니다. char 구분 문자열에서 계층 구조

문제

나는 다음과 같은

a 
a/b 
a/b/c 
a/b/c/d 
a/b/f 
a/1 
a/2 
t 
t/1 

내가 부모 자식 계층을 처리 할 수있는 클래스로 그 구문을 분석 할 필요가 포함 된 목록을 가지고있다. 모든 레벨에 무제한의 어린이가있을 수 있음을 알고 있습니다.

도움이 될 것입니다.

그것은 매우 간단합니다
+1

후 "이 데이터는 다음과 같이 표현 될 수있는 구문 분석"하는 코드입니다. –

+0

목록 myVar = 새 목록 (myString.Split (';'))); – Vince

+0

최종 결과는 최상위 노드가 'a'이고 자식 'b'가있는 노드가 여러 개의 자식을 가질 수 있고 깊이가 알려지지 않은 트리 컨트롤처럼 보일 것입니다. – Vince

답변

2

입력 형식은 Sql Server 계층 구조의 노드 경로 문자열과 거의 동일합니다. 그 (것)들을 파싱하는 것에 관하여 뒤에 오는 StackOverflow 질문은 아마 당신이 원하는 무슨을 정확하게 그렇지 않으면 아주 가까울 것이다.

Converting flattened hierarchical data from SQL Server into a structured JSON object with C#/Linq

+0

나는 C# 및 asp.net 태그만을 찾고 있으므로 검색에서 찾지 못했습니다. 그것은 매력처럼 작동합니다. 고마워요. – Vince

+0

지난 몇 시간 동안 내 머리를 두드리는 소리가 들렸습니다.이 샘플은 실제로 데이터가 실제 ID로 되돌아 오는 경우에만 효과가 있습니다. – Vince

1

, 단지 사항 String.split를 사용

String source = "a;a/b;a/b/c;a/b/c/d"; 
String[] rows = source.Split(';'); 
foreach(String row in rows) 
    Console.WriteLine(row); 

어려운 부분은 트리를 준비하는 것입니다.

+0

그 부분이 완료되었습니다. 결과를 구문 분석하는 것이 좋습니다. – Vince

+0

"a/b/c/d"값을 분리 한 후에 생성되는 List에서 부모 자식 관계가 필요합니다.이 값은 모든 새 경로에 대해 반복됩니다. 그래서 'top'경로가 2 개의 child 'child1', child2 '를 가지고 있다고 가정하면, 목록은 "top; top/child1; top/child2"와 같이 보입니다. 구분 된 쉼표에서 구문을 분석하면 3 개의 항목이 표시됩니다. "top", "top/child1", "top/child2"목록에서 부모 자식 계층을 처리 할 수있는 클래스로 파싱해야합니다. 모든 레벨에 무제한의 어린이가있을 수 있음을 알고 있습니다. – Vince