我试图弄清楚为什么这个特定的代码不会在操场上通过,我正在研究Apple提供的带有Swift的Everyone Can Code App Development应用程序。这是挑战:
现在用户可以登录了,他们需要能够在用户列表中进行搜索以找到他们的朋友。通常,可以通过让用户输入名称,然后循环浏览所有用户名来查看用户名是否包含输入的搜索词,从而完成此操作。稍后您将学习循环,因此现在您只需要经历一个循环即可。假设您正在搜索一个朋友,其用户名为StepChallenger。您在搜索栏中输入“步骤”,该应用程序开始搜索。当应用使用用户名“ stepchallenger”时,它将检查“ StepChallenger”是否包含“ step”。
在下面使用userName和searchName编写一条if-else语句,以检查userName是否包含搜索词。搜索不应区分大小写。
这是我的代码:
import Foundation
let userName = "StepChallenger"
let searchName = "step"
if userName.contains("step") && userName.lowercased() == searchName {
print("We have found the user")
}
任何帮助将不胜感激,如果操作不正确,我深表歉意。预先感谢。
答案 0 :(得分:0)
答案应该是:
QList<QString>
代替:
if userName.lowercased().contains(searchName) {
print("We have found the user")
}
因为.lowercased()本质上将“ StepChallenger”变成“ stepchallenger”,然后.contains(searchName)检查“ stepchallenger”是否包含“ step”。
答案 1 :(得分:0)
由于if
的结果为false
,因此没有打印任何内容。让我们检查一下原因
userName.contains("step")
您的userName
是“ StepChallenger”,您正在检查它是否包含“ step”。 不,因为您没有进行不区分大小写的检查。因此,自您使用false
以来,第一个条件已经返回if
,使整个false
条件的求值为&&
。
userName.lowercased()
是“ stepchallenger”,您正在检查它是否等于“ step”。不,它不是相同的字符串,因此它再次返回false
。因此,最终print
语句永远不会执行。您需要检查userName
是否包含searchName
的方法是将所有内容转换为相同的大小写并使用contains
方法。
if userName.lowercased().contains(searchName.lowercased()) {
print("User found!")
}
或者有一种caseInsensitiveCompare(_:)检查方法,您可以检出。