2009-09-29 8 views
1

Je voudrais pouvoir écrire quelque chose comme ce qui suit. Quelqu'un peut-il me montrer comment écrire une classe WordReader propre en C#. Un mot est [a-zA-Z]+.La meilleure façon de créer des flux de mot

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

Se sent comme les devoirs, donc je MAKED comme tel –

Répondre

0

J'ai lu vos personnages de mots valides jusqu'à ce que vous lui un espace ou une ponctuation. Vous voulez garder une trace de vous indexez dans le flux, tout en sautant la ponctuation et les espaces, ainsi que les numéros, dans votre cas. Cela ressemble à des devoirs, alors je vais laisser la mise en œuvre à vous.

Vous devriez considérer le cas pour les mots composés, dans votre cas, doivent-ils compter comme un ou deux mots.

1

Regex.Match ("[a-zA-Z] +") devrait vous retourner un mot sous la forme d'un objet Regex.Match. Vous pouvez utiliser Regex.Matches pour obtenir toutes les chaînes mises en correspondance, ou vous pouvez simplement faire Regex.Match (« [a-zA-Z] + », indexOfLastMatch) pour obtenir le mot suivant.

MSDN: objet Regex

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

Si vous n'êtes pas autorisé à utiliser Regex dans votre problème de travail, eh bien ...

Questions connexes