Ruby-str.upcase不是';I don’我不能在一段时间内工作
我已经编写了代码来获取一个字符串并返回相同的字符串,所有字母都改为下一个,元音大写。然而,当我尝试运行它时,元音似乎不像我预期的那样大写 这是我的代码:Ruby-str.upcase不是';I don’我不能在一段时间内工作,ruby,loops,while-loop,upcase,Ruby,Loops,While Loop,Upcase,我已经编写了代码来获取一个字符串并返回相同的字符串,所有字母都改为下一个,元音大写。然而,当我尝试运行它时,元音似乎不像我预期的那样大写 这是我的代码: def LetterChanges(str) str = str.downcase.split (" ") str.each do |word| i = 0 while i < word.length word[i] = word[i].next
def LetterChanges(str)
str = str.downcase.split (" ")
str.each do |word|
i = 0
while i < word.length
word[i] = word[i].next
word[i].upcase! if word[i] =~ /[aeiou]/
i += 1
end
end
return str.join(" ")
end
LetterChanges("helo world")
def字体更改(str)
str=str.downcase.split(“”)
str.每个do |字|
i=0
而我
有人能告诉我为什么我的代码不工作吗?当您通过
[]
方法访问字符串的一部分时,您返回的是一个新字符串,而不是指向该部分字符串的指针
您可以通过以下方式看到这一点:
str = "abcdefgh"
str[5] # "f"
str[5].upcase! # "F"
str # "abcdefgh"
upcase
方法仅对新字符串f
起作用,调用str[5]
时返回该字符串。因为它是一个新字符串,与原始字符串分开,所以原始字符串保持不变
相反,您可以使用以下内容:
def LetterChanges(str)
str.gsub(/[aeiou]/) {|letter| letter.next.upcase }
end
def字体更改(str)
str=str.downcase.split(“”)
str.每个do |字|
i=0
而我
将解决您的问题…您能提交所给示例的所需输出吗?@sagarpandya2在这种情况下所需输出将是“Ifmp xpsmE”啊。。。。我现在明白了。因此,如果我要使用
,则不使用gsub。每个都将是被修改的相同字符串gsub
根据提供给它的正则表达式在字符串中查找匹配项。块返回的值是匹配项所替换的值gsub
不是修改原始字符串,而是返回替换了匹配位的新字符串。
def LetterChanges(str)
str = str.downcase.split (" ")
str.each do |word|
i = 0
while i < word.length
word[i] = word[i].next
word[i] = word[i].upcase! if word[i] =~ /[aeiou]/
i += 1
end
end
return str.join(" ")
end
LetterChanges("helo world")