1

我希望能够写出类似下面的东西。有人可以告诉我如何用 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
}
4

2 回答 2

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

如果您不允许在作业问题中使用正则表达式,那么...

于 2009-09-29T18:59:01.283 回答
0

我会阅读您的有效单词字符,直到您使用空格或标点符号。在您的情况下,您需要在流中跟踪您的索引,同时跳过标点符号和空格以及数字。这感觉像是家庭作业,所以我将把实施留给你。

您应该考虑连字符的情况,在您的情况下,它们是否应该算作一个或两个单词。

于 2009-09-29T18:21:34.167 回答