2009-03-29 8 views

答えて

2

あなたは空白の文字列として、第2引数でTRを使用することができます。たとえば、

%("... text... ").tr('"', '') 

すべての二重引用符が削除されます。

この機能を使用して入力または出力をサニタイズする場合は、SQLインジェクションまたはクロスサイトスクリプティング攻撃を防止するには効果がありません。 HTMLの場合は、gem sanitizeまたはビューヘルパー関数hを使用する方がよいでしょう。

+2

しかし、私は "私のstrinの始まりと終わりで" g /テキスト。 – alamodey

0

あなたは、String#のGSUBを使用することができます。

%("... text... ").gsub(/\A"+|"+\Z/,'') 
+0

これは実際には小文字の '\ z'でなければなりません。 –

1

私はボックスのうち一つを知りませんが、これはあなたが欲しいものを行う必要があります。

class String 
    def strip_str(str) 
    gsub(/^#{str}|#{str}$/, '') 
    end 
end 

a = '"Hey, there are some extraneous quotes in this here "String"."' 
puts a.strip_str('"') # -> Hey, there are some extraneous quotes in this here "String". 
+1

'^'と '$'は行の先頭と末尾に一致します。 '\ A'と' \ z'を文字列の先頭と末尾に合わせたいとします。 –

0
class String 
    # Treats str as array of char 
    def stripc(str) 
    out = self.dup 
    while str.each_byte.any?{|c| c == out[0]} 
     out.slice! 0 
    end 
    while str.each_byte.any?{|c| c == out[-1]} 
     out.slice! -1 
    end 
    out 
    end 
end 

チャックの答えをすべて文字列パターンの余分なインスタンスを削除する場合は、一部の+記号が必要です。また、任意の順序で表示される可能性のある文字のセットを削除したい場合は、機能しません。

たとえば、文字列の末尾に、a, b, cの文字列を指定し、文字列がfooabacabの場合は、上で指定したコードのようなものが必要です。

2

あなたが同じことをビルトイン方法を見つけるので、もし私がここに車輪の再発明だ場合、私は知らない、私は

:-)知らせてください、私は、config/initializers/string.rbに以下を追加しましたtrim,ltrimおよびrtrimメソッドをStringクラスに追加します。

# in config/initializers/string.rb 
class String 
    def trim(str=nil) 
    return self.ltrim(str).rtrim(str) 
    end 

    def ltrim(str=nil) 
    if (!str) 
     return self.lstrip 
    else 
     escape = Regexp.escape(str) 
    end 

    return self.gsub(/^#{escape}+/, "") 
    end 

    def rtrim(str=nil) 
    if (!str) 
     return self.rstrip 
    else 
     escape = Regexp.escape(str) 
    end 

    return self.gsub(/#{escape}+$/, "") 
    end 
end 

と私はこのようにそれを使用します。私は、これは:-)を役に立てば幸い

"... hello ...".trim(".") => "hello" を

"\"hello\"".trim("\"") => "hello" を

関連する問題