我希望能够写出如下内容。有人可以告诉我如何在C#中编写一个干净的WordReader类。一个词是[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
}
答案 0 :(得分:1)
Regex.Match(“[a-zA-Z] +”)应该以Regex.Match对象的形式返回一个单词。您可以使用Regex.Matches来获取所有匹配的字符串,或者您可以只使用Regex.Match(“[a-zA-Z] +”,indexOfLastMatch)来获取下一个字。
MSDN:正则表达式对象
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx
如果你不允许在你的家庭作业问题中使用正则表达式,那么......
答案 1 :(得分:0)
我会读到你的有效单词字符,直到你的空格或标点符号为止。在您的情况下,您需要在流中跟踪您的索引,同时跳过标点符号和空格以及数字。这感觉就像是家庭作业,所以我将把实施留给你。
在您的情况下,您应该考虑使用带连字符的单词的情况,如果它们算作一两个单词。