Swift中使用.contains判断字符串功能正常但报错问题咨询
解决Swift中判断字符串后缀的错误问题
嘿,我明白你遇到的困惑了!你想用contains()来判断字符串是否以"Jr."结尾,但这个方法其实不是干这个活儿的,这就是问题所在~
错误原因
contains(_:)方法的作用是检查目标字符串中是否存在某个子串/字符,不管它在开头、中间还是结尾。比如如果你的字符串是"Jr. Smith",contains("Jr.")也会返回true,这显然不符合你要判断后缀的需求。而且如果你的代码运行时抛出错误,大概率是因为你误把contains当成了后缀判断方法,或者可能在参数传递上有小疏漏(比如没加引号之类的语法问题)。
正确的做法:使用hasSuffix(_:)
Swift专门提供了hasSuffix(_:)方法来判断字符串是否以指定后缀结尾,完全匹配你的需求。举个例子:
let junior = "Alice Johnson Jr." // 正确判断是否以"Jr."为后缀 if junior.hasSuffix("Jr.") { print("这个字符串以Jr.结尾!") } else { print("这个字符串不以Jr.结尾。") }
这段代码会准确检查字符串的最后几个字符是否和"Jr."完全匹配,不会出现误判,也不会抛出不必要的错误。
对比错误用法
如果你之前写的是类似这样的代码:
// 错误:这个只会检查是否包含"Jr.",不是判断后缀 if junior.contains("Jr.") { // 逻辑不符合预期 }
它会在字符串任意位置出现"Jr."时都执行分支,这显然不是你想要的结果。
换成hasSuffix之后,就能完美实现你需要的功能啦!
内容的提问来源于stack exchange,提问作者hellothere
相关产品推荐
相关产品推荐

