我需要帮助编写一个带字符串的方法,如果字母“z”出现在之后的字母中,则返回true。您可以假设该字符串仅包含小写字母。这就是我所拥有的:
def nearby_az(string)
string.downcase!
i = 0
while i < string.length
if (string[i] == "a" && string[i] == "z")
true
else
false
end
end
end
puts('nearby_az("baz") == true: ' + (nearby_az('baz') == true).to_s)
puts('nearby_az("abz") == true: ' + (nearby_az('abz') == true).to_s)
puts('nearby_az("abcz") == true: ' + (nearby_az('abcz') == true).to_s)
puts('nearby_az("a") == false: ' + (nearby_az('a') == false).to_s)
puts('nearby_az("z") == false: ' + (nearby_az('z') == false).to_s)
puts('nearby_az("za") == false: ' + (nearby_az('za') == false).to_s)
答案 0 :(得分:3)
正则表达式对此最好。尝试
def nearby_az(string)
(string =~ /a.{0,2}z/) != nil
end
修改强> 根据&#34; if语句要求的要求&#34; :)
def nearby_az(string)
if (string =~ /a.{0,2}z/) != nil
return true
end
return false
end
此代码的工作方式是在输入字符串中搜索&#34; a&#34;。之后,句号表示您可以拥有任何角色。之后你有{0,2}
这是句号的修饰语,表示你可以有0到2的任何一个字符。在此之后你必须有一个&#34; z&#34;,这就满足了你必须在一个&#34; a&#34;的3个字符内的z。
我已将此正则表达式保存到regex101 here,因此您可以尝试各种输入以及更改正则表达式以更好地理解它。
答案 1 :(得分:1)
要修复您需要的代码:
以下是它的样子:
def nearby_az(string)
string.downcase!
i = 0
while i < string.length do
return true if string[i] == "a" && string[i+1,3].include?(?z)
i+=1
end
return false
end