一尘不染

如何找到Swift字符串中子字符串的最后一次出现?

swift

在Objective-C中,我使用了:

[@"abc def ghi abc def ghi" rangeOfString:@"c" options:NSBackwardsSearch];

但是现在NSBackWardsSearch似乎不存在。谁能为Swift提供等效的代码?

我希望能够在整个字符串中找到字符数。因此,在上面的示例中,它将返回3。


阅读 356

收藏
2020-07-07

共1个答案

一尘不染

可可框架应该可以在Swift中访问,但是您需要导入它们。尝试导入Foundation以访问NSString API。从“将Swift与Cocoa和Objective-C结合使用”指南的“使用Cocoa数据类型-
字符串

”中:

Swift会在String类型和NSString类之间自动桥接。[…]要启用字符串桥接,只需导入Foundation。

另外,它NSBackwardsSearch是一个枚举值,因此您必须使用Swift的enum
/
option语法来访问它(作为NSStringCompareOptions选项类型的一部分)。前缀从C枚举值中剥离,因此NS从值名称中删除。

总而言之,我们有:

import Foundation
"abc def ghi abc def ghi".rangeOfString("c", options:NSStringCompareOptions.BackwardsSearch)

请注意,您可能必须使用distanceadvance函数来正确使用from的范围rangeOfString

2020-07-07