agf*_*105 16 string substring swift
在Objective-C我用过:
[@"abc def ghi abc def ghi" rangeOfString:@"c" options:NSBackwardsSearch];
但现在NSBackWardsSearch似乎不存在.任何人都可以提供Swift的等效代码吗?
如果可能的话,我希望能够在整个字符串中找到字符编号.所以在上面的例子中它将返回3.
out*_*tis 17
Cocoa框架应该可以在Swift中访问,但是你需要导入它们.尝试导入Foundation以访问NSString API.来自" 使用Swift with Cocoa和Objective-C"的"使用Cocoa数据类型 - 字符串 "指南:
Swift自动在String类型和NSString类之间架起桥梁.[...]要启用字符串桥接,只需导入Foundation.
另外,NSBackwardsSearch是一个枚举值(标记并作为选项导入),因此您必须使用Swift的枚举/选项语法来访问它(作为NSStringCompareOptions选项类型的一部分).从C枚举值中删除前缀,因此NS从值名称中删除.
总而言之,我们有:
import Foundation
"abc def ghi abc def ghi".rangeOfString("c", options:NSStringCompareOptions.BackwardsSearch)
请注意,您可能必须使用distance和advance函数来正确使用范围rangeOfString.
Wom*_*ble 16
如果要替换字符串中的最后一个子字符串:
(斯威夫特3)
extension String
{
    func replacingLastOccurrenceOfString(_ searchString: String,
            with replacementString: String,
            caseInsensitive: Bool = true) -> String
    {
        let options: String.CompareOptions
        if caseInsensitive {
            options = [.backwards, .caseInsensitive]
        } else {
            options = [.backwards]
        }
        if let range = self.range(of: searchString,
                options: options,
                range: nil,
                locale: nil) {
            return self.replacingCharacters(in: range, with: replacementString)
        }
        return self
    }
}
用法:
let alphabet = "abc def ghi abc def ghi"
let result = alphabet.replacingLastOccurrenceOfString("ghi",
        with: "foo")
print(result)
// "abc def ghi abc def foo"
或者,如果要完全删除最后一个子字符串,并将其清理:
let result = alphabet.replacingLastOccurrenceOfString("ghi",
            with: "").trimmingCharacters(in: .whitespaces)
print(result)
// "abc def ghi abc def"
pha*_*m_2 12
Swift 3.0:
"abc def ghi abc def ghi".range(of: "c", options: String.CompareOptions.backwards, range: nil, locale: nil)
| 归档时间: | 
 | 
| 查看次数: | 10407 次 | 
| 最近记录: |