0

次のような配列を作成するとします。

:001 > holder = "This.File.Q99P84.Is.Awesome"
=> "This.File.Q99P84.Is.Awesome" 
:002 > name = holder.split(".")
=> ["This", "File", "Q99P84", "Is", "Awesome"]

今、私はできる:

name[2].include? 'Q99P84' 

「Q99P84」を入れる代わりに、「Q の記号の後に数字の記号、数字の記号、P の記号、数字の記号、数字の記号が続くようなものを入れたい
ので、.include? 関数は動的になります。したがって、ロードしたファイル名に Q##P## が含まれていると、 が返されtrueます。

これはおそらく、何を検索すればよいか正確にわからないだけだと確信しています。答えがわかっている場合は、ドキュメントにリンクしていただけますか。

4

2 に答える 2

0

これを行う 1 つの方法は、正規表現 (略して「regex」) を使用することです。2 つの良い情報源は、Regular Expression.infoと、より Ruby 中心のRubularです。

文字列で正規表現を使用する 1 つの方法は、次のString#matchメソッドです。

names[2].match(/Q\d\dP\d\d/) # /d stands for digit 

これは、一致する場合は文字列を返し、一致しnilない場合は返します。

"Q42P67".match(/Q\d\dP\d\d/) #=> "Q42P67"
"H33P55".match(/Q\d\dP\d\d/) #=> nil

if返される文字列は「真実」であり「偽」であるため、これは条件に役立ちますnil

names[2] = "Q42P67"
if names[2].match(/Q\d\dP\d\d/)
   # Will execute code here
end

names[2] = "H33P55"
if names[2].match(/Q\d\dP\d\d/)
   # Will not execute code here
end

正規表現の研究をさらに掘り下げるまで、これが役立つことを願っています。

編集: の Q と P/Q\d\dP\d\d/は大文字であることに注意してください。大文字と小文字が重要でない場合は、大文字と小文字を区別しないように「i」を追加できます。/Q\d\dP\d\d/i「Q42P67」と「q42P67」をキャプチャします

于 2013-06-21T15:16:33.663 に答える