HumanString
HumanString 是一个包,它允许您使用整数而不是 String.Index 来指定字符串中的范围。
let str = "今天天氣好清爽"
XCTAssertTrue(str[0] == "今")
XCTAssertTrue(str[4] == "好")
XCTAssertTrue(str[-1] == "爽")
XCTAssertTrue(str[0..<2] == "今天")
XCTAssertTrue(str[0...2] == "今天天")
XCTAssertTrue(str[-3 ..< -1] == "好清")
XCTAssertTrue(str[-3 ... -1] == "好清爽")
XCTAssertTrue(str[-3 ... 0] == nil)
XCTAssertTrue(str[-3 ..< 0] == "好清爽")
XCTAssertTrue(str[-3 ..< 1] == nil)
XCTAssertTrue(str[-3 ... 1] == nil)
XCTAssertTrue(str[0...] == "今天天氣好清爽")
XCTAssertTrue(str[1...] == "天天氣好清爽")
XCTAssertTrue(str[(-2)...] == "清爽")
XCTAssertTrue(str[(-1)...] == "爽")
XCTAssertTrue(str[..<3] == "今天天")
XCTAssertTrue(str[...3] == "今天天氣")
XCTAssertTrue(str[..<(-1)] == "今天天氣好清")
XCTAssertTrue(str[...(-1)] == "今天天氣好清爽")
安装
您可以使用 Swift 包管理器安装此包。将以下行添加到您的 Packages.swift
文件中
dependencies: [
.package(url: "https://github.com/zonble/HumanString.git"),
],
您也可以使用 CocoaPods 安装库,只需在您的 Podfile 中添加 pod "HumanString"
备注
Swift 自 Swift 4 起采用 String.Index。它倾向于不时提醒您字符串的宽度是不可固定的(参见Swift 4 中的字符串)。然而,这有时可能有些痛苦。例如,如果您要从 "Hello World" 中提取前缀,可能会这样做
let str = "Hello World"
let subString = s[...str.index(str.startIndex, offsetBy: 5)]
但是等等,您仍然在使用整数,对吧?上面的代码可以写成
let subString = s[str.index(str.startIndex, offsetBy: 0)...str.index(str.startIndex, offsetBy: 5)]
我知道 Swift 团队不喜欢我在这里做的事情,但不知何故,我还是想使我自己的生活更简单。