我似乎在swift 4中找不到字符串的API。目标C等价物如下。

NSString *s = @"abcdefg";
NSString *ss = @"cde";
// just check if s contains ss
NSLog(@"%d", [s containsString:ss]);
// get range of ss in s
NSLog(@"%@", NSStringFromRange([s rangeOfString:ss]));

我错过了什么?
编辑:
我收到此错误消息:
test.swift:1:19: error: cannot convert value of type 'String' to expected argument type 'String.Element' (aka 'Character')
"abcdef".contains("cde")

所以我没有意识到我错过了“进口基金会”…

最佳答案

String将具有

func contains<T>(_ other: T) -> Bool where T : StringProtocol

这将在导入Foundation后可用,因为它映射到NSString
open func contains(_ str: String) -> Bool

事实上,导入功能扩展了Swift的所有功能,您可以在其documentation here中找到这些功能。
原因:斯威夫特的Foundation并不像String那样进化,因此至少现在它对它来说是bridged的。
无论如何…
检查子串的Swift 4解决方案是:
let string = "Hello, World"
let hasSubstring = string.contains("ello")

10-01 05:38
查看更多