2016-06-22 9 views
2

文字列内のアポストロフィを削除しようとしています。下のコードを使用して、アポストロフィとスペースを削除しました。だれでもアポストロフィを削除するだけですので修正できますか?gsub!クリーンな文字列、アポストロフィを削除する

def clean_uniname(text) 
return text.gsub!(/\s|"|'/, '') 
end 
+1

アポストロフィとシングルクォーテーションは同じシンボルを使用しますが、意味は異なります。あなたの文字列が ''私は知らない ''と言ったとしよう。彼女は「私は知らない」と言っていますか(「アポストロフィだけを取り除く」)、「私は知らない」と言っていますか?それが前者の場合、最後の文字(「bro '」や「Chris」のような「s」で終わる単語のための所有形式)の後にアポストロフィを持つ単語がいくつかあり、複数のアポストロフィ(「できません」)。 –

答えて

3

\sを "空白文字" を意味し、"は引用符を表します。それらをあなたの正規表現に入れたくなければ、それらを引っ張りなさい。デバッグの場合は、Rubularを試してみてください。

これはあなたのコードがどうあるべき意味:

def clean_uniname(text) 
    text.gsub!(/\s|"|'/, '') 

    text 
end 

それは何も変更はそれほど行われていない場合は、戻り値を使用している場合gsub!リターンがniltextの明示的なリターンがここで必要とされていることは注目に値します。

3

これはトリックを行う必要があります。

def clean_uniname(text) 
    text.gsub!("'", '') 
    end 
+0

これを試してみましたが、私はこのエラーを受け取りました: testing.rb:41: 'block in process_unis ':未定義メソッド' []' for nil:NilClass(NoMethodError) – Akamaru

+0

このエラーは、次のようになります:2.2.1:001> string> "私は文字列" => "私は文字列です" 2.2.1:002> string.gsub!( "'"、' ') = > "Im a string" 2.2.1:003> さらにコードを投稿すると、他の問題を解決するのに役立つかもしれませんが、私の答えは問題を解決して以来、あなたは尋ねました。 –

関連する問題