swift - 如何在 Swift 4 中搜索字符串中的子字符串?

标签 swift string swift4

我似乎无法在 Swift 4 中找到 String 的 API。下面是 Objective-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")

所以我没有意识到我缺少“import Foundation”...

最佳答案

String 会有一个

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

这将在您导入 Foundation 后可用,因为它映射到 NSString

open func contains(_ str: String) -> Bool

事实上,导入 Foundation 扩展了 Swift 的 String,其中包含您可以在其中找到的所有 NSString 功能 documentation here .

原因:Swift 的 String 没有NSString 那样进化,因此它是 bridged至少现在。


无论如何...

检查子字符串的 Swift 4 解决方案是:

let string = "Hello, World"
let hasSubstring = string.contains("ello")

关于swift - 如何在 Swift 4 中搜索字符串中的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49784095/

相关文章:

swift - 了解如何正确执行 CKQueryOperation

ios - Xcode 8/swift 3 : Reset all variables to initial values

java - 是否可以将 "Draw"字符串写入 Canvas ?

java - 如何将 StringReader 转换为字符串?

string - 使用 Bash/Perl 根据每个文件的名称修改文件

ios - 在 swift 4 中验证电话号码时,我从 firebase 收到 'invalid token'

ios - 无法分配给属性 : 'item' is a 'let' constant (Swift 4)

ios - 尝试在 Swift 4、IOS 11 中使用 Filter 时出现错误消息

swift - 在 Swift for OSX 的子类中管理事件处理

ios - 使用未声明的类型 'ResponseJSONObjectSerializable'