0

これを聞いて申し訳ありませんが、私は本当にこれを成し遂げる必要があります. 文字列を渡して stop_words を削除できるようにしたいと思います。私は次のものを持っています:

class Query
  def self.normalize term
    stop_words=["a","big","array"]
    term.downcase!
    legit=[]
    if !stop_words.include?(term)
      legit << term
    end
    return legit
  end

  def self.check_parts term
    term_parts=term.split(' ')
    tmp_part=[]
    term_parts.each do |part|
      t=self.normalize part
      tmp_part << t
    end  
    return tmp_part  
  end
end

これは stop_words リストにない用語のみを返すと思いますが、空の配列または渡された用語の配列のいずれかが返されます。次のように:

ruby-1.9.2-p290 :146 > Query.check_parts "here Is my Char"
 => [[], [], [], ["char"]] 
ruby-1.9.2-p290 :147 >

私は何を間違っていますか?

thx事前に

4

2 に答える 2

0

なぜあなたは私が知らない配列として結果が欲しいのですか?

term_parts=term.split(' ')
term_parts.reject { |part| stop_words.include?(part) }

あなたはあなたが期待するものを書くことができます。
ちなみに、あなたは配列のための配列を持っています

def self.check_parts term
    term_parts=term.split(' ')
    tmp_part=[]                 # creates an array
    term_parts.each do |part|
      t=self.normalize part     # normalize returns an empty array
                                # or one of only one element (a term).
      tmp_part << t             # you add an array into the array
    end  
    return tmp_part  
  end
于 2012-10-18T07:01:45.300 に答える
0

用語を除外して、小文字の単語の配列を取得するだけの場合は、簡単です。

module Query
  StopWords = %w[a big array]
  def self.check_parts string; string.downcase.split(/\s+/) - StopWords end
end

Query.check_parts("here Is my Char") # => ["here", "is", "my", "char"]
于 2012-10-18T07:50:23.017 に答える