0

Ruby-on-Rails モデルがあります。

class Candidate < ActiveRecord::Base
  validates_presence_of :application_essay
  validate :validate_length_of_application_essay

  protected

  def validate_length_of_application_essay
    return if application_essay.blank? # don't add a second error message if they didn't fill it out
    errors.add(:application_essay, :too_long), unless ...
  end
end

application_essayC に落ち込まずに、500 語以下であることを確認する最速の方法は何ですか? ほとんどのエッセイは少なくとも 200 語であり、5000 語を超える可能性は低く、英語 (または「ビジネス英語」と呼ばれることもある疑似英語) で書かれていると想定できます。分類が一般的なユーザーにすぐにわかる限り、「単語」として必要なものを分類することもできます。(注: これは、「典型的なユーザー」とは何かを議論する場所ではありません :) )

4

6 に答える 6

7

Rails3 では:tokenizerlambdaメソッドで a を使用することも機能します。

validates_length_of :essay, :minimum => 100, :too_short => "Your essay must be at least 100 words."), :tokenizer => lambda {|str| str.scan(/\w+/) }

これは最速ではないかもしれませんが、確かに最もクリーンな方法です。

于 2010-12-29T21:03:01.230 に答える
2

線形検索よりも速くなることはありません。申し訳ありません(これが何らかのテキストエディタ用であり、段階的に追跡できる場合を除く)

于 2010-05-04T01:46:45.370 に答える
1

単語の典型的なサイズを推定し、除算することで単語の量を推測することができます。

ここにいくつかのヒント:http://blogamundo.net/lab/wordlengths/

5.1のように試して、いくつかのテストを実行することで、自分がどれほど正確かを確認できます。

空白があるので、おそらく6.1で割ります。

あなたはあなたのテキストが単なる大量の空白か何かではないと仮定していることを覚えておいてください。ええと、でもあなたが本当に興味があるなら、それがx語以下であることを確認してください。あなたはxでおそらく5の小さな数字を試すことができます、そしてそれがx x 5文字より少ないなら、あなたはそれがx以上の単語を持っていないことをかなり確信することができます。

したがって、他の回答で述べられているように、線形検索を実行する方が良いかもしれません。線形探索はそれほど悪くはありません。それはあなたが何をしたいかによります。

于 2010-05-04T01:48:39.370 に答える
1

そのためのプラグインがありますが、自分で使用したことはありません:)

http://code.google.com/p/validates-word-count/

そのプラグインは、隣接するすべての「単語文字」を単一の文字に切り替えてから、単語以外のすべての文字を削除してカウントします。それが最速かどうかはわかりません。

于 2010-05-04T10:15:24.057 に答える
1

私は次のようなものを使用します:

string.split(" ").length <= 500

どのようなパフォーマンスの問題が発生していますか? 500 語程度の文字列はそれほど問題にはなりません。

于 2010-05-04T04:28:13.507 に答える
-1

ここにあなたが好きかもしれない素敵な記事があります

http://dotnetperls.com/word-count

于 2010-05-04T01:50:50.923 に答える