以下の要件を満たすxyz_thereメソッドを実装する問題。
・任意の文字列から連続する文字列"xyz"を探し、その直前にピリオド(.)がない場合はTrueを出力する
・任意の文字列から連続する文字列"xyz"を探し、その直前にピリオド(.)がある場合はFalseを出力する
・上記2つの条件に当てはまらない場合はFalseを出力する
def xyz_there(str)
#処理を記述
end
出力例
xyz_there('abcxyz') → True
xyz_there('abc.xyz') → False
xyz_there('xyz.abc') → True
xyz_there('azbycx') → False
xyz_there('a.zbycx') → False
以下、模範解答
def xyz_there(str)
if str.include?(".xyz")
puts "False"
elsif str.include?("xyz")
puts "True"
else
puts "False"
end
end
以下、解説
まず、指定した要素が配列や文字列に含まれているかを判別するinclude?メソッドの理解
配列の場合
a = ["A", "B", "C"]
a.include?("B") #=> true
a.include?("Z") #=> false
文字列の場合
"Hello".include? "lo" #>= true
"Hello".include? "ol" #>= false
上記の要領でinclude?を用いて、対象となる含まれているかどうかを、各条件式で判別する。
ポイントとしては、str.include?(".xyz")の条件式をstr.include?("xyz")より前に設置すること。
例えば"abc.xyz"という文字列の場合は、str.include?("xyz")においてもtrueとなってしまうため、先に".xyz"を含むかどうかを判別する必要がある。