1

Rubyを使用して文字列を分割し、単語数を数えようとしていますが、特殊文字を無視したいです。

たとえば、この文字列 "Hello, my name is Hugo ..." をスペースで分割していますが、最後の ... は単語ではないためカウントされません。

を使用してstring.inner_text.split(' ').lengthいます。テキストからスペースで区切られた特殊文字 (... ? ! など) をカウントしないように指定するにはどうすればよいですか?

皆さん、ありがとうございます、よろしくお願いします、ヒューゴ

4

2 に答える 2

1

これは一部の回答であり、@Neoの回答に対する一部の回答です。仕事に適切なツールを使用しないのはなぜですか?

http://www.ruby-doc.org/core-1.9.3/Regexp.htmlは次のように述べています。

POSIX ブラケット式も文字クラスに似ています。これらは、非ASCII文字を含むという追加の利点とともに、上記の移植可能な代替手段を提供します。たとえば、/\d/ は ASCII 10 進数 (0 ~ 9) のみに一致します。一方、/[[:digit:]]/ は Unicode Nd カテゴリの任意の文字に一致します。

  • /[[:alnum:]]/ - アルファベットと数字
  • /[[:alpha:]]/ - 英字
  • ...

Ruby は、次の非 POSIX 文字クラスもサポートしています。

  • /[[:word:]]/ - 次の Unicode の一般的なカテゴリの文字、文字、マーク、数字、コネクタ_句読点

言葉が欲しい、使うstr.scan /[[:word:]]+/

于 2013-08-19T14:42:38.590 に答える