Swift 3 中的字符串和索引
String and index in Swift 3
这是我的代码的一部分:
let separator = anyWord.indexOf("-")!
if (separator >= 0) {
let res = anyWord[anyWord.characters.index(after: separator)..<anyWord.endIndex] //get an error
//some code
}
我在 'let res' 部分出错 - 类型 'String!' 没有下标成员
如果我这样做:
let separator = anyWord.indexOf("-")!
let subStartIndex = anyWord.characters.index(after: separator)
String 的扩展:
extension String {
public func indexOf(_ char: Character) -> Int! {
if let idx = self.characters.index(of: char) {
return self.characters.distance(from: self.startIndex, to: idx)
}
return Const.INVALID_VALUE
}
我收到错误:
String may not be indexed with 'Int", it has variable size elements
将其转换为字符串
let test: String
test = "Test-Word"
if let separatorWord = anyWord.range(of: "-")
{
let word = anyWord.substring(from: anyWord.index(after:
separatorWord.lowerBound))
print(word)
}
你想得太复杂了,在 Swift 3 使用 range(of
和 upperBound
很容易
let anyWord = "asdghf-fkgjh"
if let separator = anyWord.range(of:"-") {
let res = anyWord.substring(from: separator.upperBound)
//some code
}
我喜欢 'pure' swift 解决方案(不需要基础)
let anyWord = "asdghf-fkgjh-blablabla--bla"
anyWord.characters.split(separator: "-").forEach { print( String([=10=])) }
它打印
asdghf
fkgjh
blablabla
bla
这是我的代码的一部分:
let separator = anyWord.indexOf("-")!
if (separator >= 0) {
let res = anyWord[anyWord.characters.index(after: separator)..<anyWord.endIndex] //get an error
//some code
}
我在 'let res' 部分出错 - 类型 'String!' 没有下标成员
如果我这样做:
let separator = anyWord.indexOf("-")!
let subStartIndex = anyWord.characters.index(after: separator)
String 的扩展:
extension String {
public func indexOf(_ char: Character) -> Int! {
if let idx = self.characters.index(of: char) {
return self.characters.distance(from: self.startIndex, to: idx)
}
return Const.INVALID_VALUE
}
我收到错误:
String may not be indexed with 'Int", it has variable size elements
将其转换为字符串
let test: String
test = "Test-Word"
if let separatorWord = anyWord.range(of: "-")
{
let word = anyWord.substring(from: anyWord.index(after:
separatorWord.lowerBound))
print(word)
}
你想得太复杂了,在 Swift 3 使用 range(of
和 upperBound
let anyWord = "asdghf-fkgjh"
if let separator = anyWord.range(of:"-") {
let res = anyWord.substring(from: separator.upperBound)
//some code
}
我喜欢 'pure' swift 解决方案(不需要基础)
let anyWord = "asdghf-fkgjh-blablabla--bla"
anyWord.characters.split(separator: "-").forEach { print( String([=10=])) }
它打印
asdghf
fkgjh
blablabla
bla