2012-01-09 2 views
0

WYSIWYGエディタで作業していて、特定の文字を時々その文字の16進コードに置き換えることに気づいた例えば、'または&のように。Rubyで文字列や文字列を検索するための.index()を使用する

文字列のインデックスメソッドがこれらの16進コードを含むようにオーバーライドするにはどうすればよいですか?どのように行うsomestring.index("\'hello there")を行う際

などが、私はそれが\''

ノートを検索し得る:単一引用符を二重引用符に対して、明確にするためにエスケープされます。

このような文字列検索を行う最も効率的な方法は何ですか? はすでに構築されたこのようなものがあります。また

、私は外部ツールを使用していているので、私は本当に物事がしているフォーマットで発言権を持っていない

答えて

2

SOLUTION:。。

search_reg_exp = Regexp.escape(str).gsub(/(both|options|or|more)/, "(both|options|or|more)") 

    long_str.index(search_reg_exp) 

ORIGINAL ANSWER:

String#indexがちょうど単一の文字では動作しません

が、それは任意の長さの部分文字列に使用することができ、そしてあなたはそれを、おそらくこのケースでは最高になり、正規表現を与えることができます:

some_string = "Russell's teapot" 
another_string = "Russell's teapot" 

apostrophe_expr = /'|'/ 

some_string.index apostrophe_expr 
# => 7 

another_string.index apostrophe_expr 
# => 7 

もう1つの方法は、文字列の操作を開始する前にHTMLエンティティをデコードすることです。 html_helpersなど、このための様々な宝石があります。

require 'html_helpers' 

another_string = "Russell's teapot" 

yet_another_string = HTML::EntityCoder.decode_entities another_string 
# => "Russell's teapot" 

yet_another_string.index "'" 
# => 7 

yet_another_string.index ?' # bonus syntax tip--Ruby 1.9.1+ 
# => 7 
+0

あなたの最初のソリューション:あなたが検索テキストは、いくつかの文字列や他の文字列、およびテキストのはるかに大きな身体であなたの検索であるかどうかを判定することを行うのですか? – NullVoxPopuli

+0

正規表現内の任意の数の '| '文字を使用して、いくつかの選択肢のいずれかに一致させることができます。 '/ foo | bar | baz /'です。正規表現は大きな話題ですが、最終的に学ぶ必要があります。 Pickaxeには[非常に短いイントロ](http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html#UJ)があります。 –

+0

私は正規表現を知っています、それは正規表現のために文字列全体をエスケープする方法の問題ですので、そこにあるものとマッチさせようとします。他のことはしません。それが完了したら、私は 'またはHTMLコードを正規表現equivで両方ともgsubする必要があります。 – NullVoxPopuli

関連する問題