我的代碼是關于一個有 3 個可能答案的機器人(這取決于你在訊息中輸入的內容)
所以,在這個可能的答案中,一個取決于輸入是否是一個問題,為了證明它,我認為它必須識別“?” 字串上的符號。
我可以使用“匹配”方法還是包含?
這段代碼將被包含在一個回圈中,可能以 3 種可能的方式回答。
例子:
puts "whats your meal today?"
answer = gets.chomp
answer.includes? "?"
or
answer.match('?')
uj5u.com熱心網友回復:
看看String#end_with? 我認為這是你應該使用的。
uj5u.com熱心網友回復:
使用字串#match?反而
String#chomp只會從字串中洗掉特定于作業系統的換行符,但不會洗掉 String#chomp 和String#end_with? 將處理某些邊緣情況,例如多行匹配或末尾有空格字符的字串。相反,使用帶有String#match 的正則運算式?. 例如:
print "Enter a meal: "
answer = gets.chomp
answer.match? /\?\s*\z/m
如果您的答案中的(可能是多行的)字串包含以下內容,則Regexp文字/\?\s*\z/m將回傳值:true
- 一個字面上的問號(這就是它被轉義的原因)......
- 后跟零個或多個空格字符...
- 錨定到帶有或不帶有換行符的字串末尾,例如
\nor\r\n,盡管這些通常已被#chomp 洗掉。
這將比您當前的解決方案更強大,并且將處理更廣泛的輸入,同時更準確地查找以問號結尾的字串,而不考慮尾隨空格或行結尾。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/460554.html
