我正在尝试找出为什么这个特定的代码无法在 Playground 中通过,我正在学习 Apple 提供的“Everyone Can Code App Development with Swift”类(class)。挑战如下:
既然用户可以登录,他们需要能够搜索用户列表以找到他们的 friend 。这通常可以通过让用户输入名称,然后循环遍历所有用户名以查看用户名是否包含输入的搜索词来完成。稍后您将了解循环,因此现在您只需完成一个循环。假设您正在搜索一位用户名为 StepChallenger 的 friend 。您在搜索栏中输入“step”,应用程序开始搜索。当应用程序访问用户名“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")
}
任何帮助将不胜感激,如果我做得不正确,我深表歉意。提前致谢。
最佳答案
它没有打印任何内容,因为 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(_:)检查方法你可以检查一下。
关于Swift Playgrounds Apple 人人能编程应用程序练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51862433/