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

あなたがスペースまたは句読点になるまで、私はあなたの有効な単語文字を読んだでしょう。あなたの場合、句読点、スペース、および数字をスキップしながら、ストリーム内のインデックスを追跡する必要があります。これは宿題のように感じるので、実装はあなたに任せます。

あなたのケースでは、ハイフンでつながれた単語が 1 つまたは 2 つの単語として数えられるかどうかを考慮する必要があります。

于 2009-09-29T18:21:34.167 に答える