2013-03-18 2 views
0

공백으로 분할하여 단어 사전에 저장할 문자열이 있습니다 (간단 함). 그러나 나는 또한 단어의 색인과 길이를 원한다.공백으로 긴 문자열을 분할하고 각 단어의 모든 색인을 저장하십시오.

지금까지, 나는 단지 그들이 발견 된 순서대로 단어의 사전과 ....이

private Dictionary<int,String> makeDictionary(String ASCII) 
    { 
     string[] t = ASCII.Split(new[] { ' ' }, 
      StringSplitOptions.RemoveEmptyEntries); 
     Dictionary<int, string> aDictionary = new Dictionary<int, string>(); 
     for (int i = 0; i < t.Length; i++) 
     { 
      t[i] = stripSymbolsFromString(t[i]); 

      if (!aDictionary.ContainsValue(t[i]) && t[i] != "") 
      { 
       aDictionary.Add(i, t[i]); 
      } 
     } 
     return aDictionary; 
    } 

합니까 누구 인덱스를 유지하면서 내가 .Split()를 사용하는 방법에 대해 어떤 생각을 가지고 연결의 다른 기술을 사용해야합니까? 아래에 누군가가 게시, Regex를 사용하여 일치하는 색인을 제공합니다.

편집 : 길이가 필요하지 않습니다. 누군가 지적했듯이, 나는 그 문자열에서 얻을 수 있습니다. 나는 그 단어의 시작 색인이 필요할 것이다.

EDIT2 : 나는 중복 된 단어를 무시합니다.

EDIT3

:

로렘 입숨 단순히 더미 인쇄 텍스트와 산업을 조판 수 있습니다 : 여기 내가 사용하는 것입니다 문자열의 예입니다. Lorem Ipsum은 알려지지 않은 프린터가 유형의 조리실을 사용하고 이 형식 표본을 만들기 위해 뒤섞어 놓은 1500 년대 이래로 의 업계 표준 더미 텍스트였습니다. 그것은 단지 5 세기뿐만 아니라 전자 조판에 도약, 본질적으로 변하지 남아있다. 그것은 Lorem Ipsum 구절을 포함하는 Letraset 시트의 출시와 함께 1960 년대에 대중화되었고, 최근에는 Lorem Ipsum의 버전을 포함한 Aldus PageMaker 과 같은 데스크탑 출판 소프트웨어를 사용하여 과 더 최근에 대중화되었습니다.

그래서 처음 몇 요소 것

[0] => Lorum,

[6] => Ipsum 제품,

[12] =>

인 숫자 0,6,12는 문자열 내의 단어의 원래 색인입니다.

+1

를 형성하기 위해 words을 처리 할 수있는 인덱스 및 길이 나뉘어져 ..? 또한 문자열 예제를 붙여 넣을 수 있다면 분할하려고합니다. – MethodMan

+0

원래 문자열의 위치와 같은 인덱스를 의미합니까? 또는 분할 배열 내의 위치? 또한 사전이 거꾸로 된 것 같습니다. 그것은 모든 반복에서'.ContainsValue'를 사용할 필요가없는 키를 string으로 사용해야합니다. –

+0

'Matt '에 동의합니다. 사전은'Dictionary aDictionary = new Dictionary ();' – MethodMan

답변

2
string s = "abc def ghijkl mno abc"; 

var words = Regex.Matches(s, @"[^ ]+").Cast<Match>() 
       .Select(m => new 
       { 
        Str = m.Value, //OR Length = m.Value.Length 
        Offset = m.Index 
       }) 
       .ToList(); 

당신은 더 문자열이있는 때 '서수 Position` 유지에 대해 이야기되는 dictionary

var dict = words.GroupBy(w => w.Str) 
       .ToDictionary(g => g.Key, g => g.Select(x => x.Offset).ToList()); 
관련 문제