2009-09-29 6 views
1

Я хотел бы написать что-то вроде следующего. Может кто-нибудь показать мне, как написать чистый класс WordReader в C#. Слово [a-zA-Z]+.Лучший способ создать поток слов

public List<string> GetSpecialWords(string text) 
{ 
    string word; 
    List<string> specialWords = new List<string>(); 
    using (WordReader wr = new WordReader(text)) 
    { 
     while (true) 
     { 
      word = wr.Read(); 
      if (word == null) break; 
      if (isSpecial(word)) specialWords.Add(word); 
     } 
    } 
    return specialWords; 
} 

private bool isSpecial(string word) 
{ 
    //some business logic here 
} 
+2

ощущению как домашнее задание, так что я его цветовое как таковые –

ответ

0

Я бы прочитал ваши действительные символы слова до тех пор, пока вы не воспользуетесь пробелом или пунктуацией. Вы захотите отслеживать свой индекс в потоке, пропуская знаки препинания и пробелы, а также цифры в вашем случае. Это похоже на домашнюю работу, поэтому я собираюсь оставить реализацию до вас.

Вы должны рассмотреть случай для переносимых слов в вашем случае, если они считаются одним или двумя словами.

1

Regex.Match ("[a-zA-Z] +") должен вернуть вам слово в виде объекта Regex.Match. Вы можете использовать команды Regex.Matches для получения всех совпадающих строк, или вы можете просто сделать Regex.Match («[a-zA-Z] +», indexOfLastMatch), чтобы получить следующее слово.

MSDN: Regex объект

http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx

Если вы не можете использовать Regex в вашей проблеме домашнего задания, ну ...