从字符串中删除第 n 个字符
Remove nth character from string
我见过很多从字符串中删除最后一个字符的方法。但是,有没有办法根据其索引删除任何旧字符?
虽然字符串索引不是随机访问的,也不是数字,但您可以将它们前移一个数字以访问第 n 个字符:
var s = "Hello, I must be going"
s.removeAtIndex(advance(s.startIndex, 5))
println(s) // prints "Hello I must be going"
当然,在执行此操作之前,您应该始终检查字符串的长度至少为 5!
编辑:正如@MartinR 指出的那样,您可以使用带结束索引的 advance 版本来避免 运行 结束的风险:
let index = advance(s.startIndex, 5, s.endIndex)
if index != s.endIndex { s.removeAtIndex(index) }
一如既往,可选项是你的朋友:
// find returns index of first match,
// as an optional with nil for no match
if let idx = s.characters.index(of:",") {
// this will only be executed if non-nil,
// idx will be the unwrapped result of find
s.removeAtIndex(idx)
}
var hello = "hello world!"
假设我们要删除 "w"。 (它在第 6 个索引位置。)
首先:为那个位置创建一个索引。 (我正在使 return 类型 Index 明确;这不是必需的)。
let index:Index = hello.startIndex.advancedBy(6)
第二步:调用removeAtIndex()并将我们刚刚创建的索引传递给它。 (注意它 return 是有问题的字符)
let choppedChar:Character = hello.removeAtIndex(index)
print(hello)
// 打印 hello orld!
print(choppedChar)
// 打印 w
Swift 3.2
let str = "hello"
let position = 2
let subStr = str.prefix(upTo: str.index(str.startIndex, offsetBy: position)) + str.suffix(from: str.index(str.startIndex, offsetBy: (position + 1)))
print(subStr)
"helo"
这是一个安全的Swift4实现。
var s = "Hello, I must be going"
var n = 5
if let index = s.index(s.startIndex, offsetBy: n, limitedBy: s.endIndex) {
s.remove(at: index)
print(s) // prints "Hello I must be going"
} else {
print("\(n) is out of range")
}
我见过很多从字符串中删除最后一个字符的方法。但是,有没有办法根据其索引删除任何旧字符?
虽然字符串索引不是随机访问的,也不是数字,但您可以将它们前移一个数字以访问第 n 个字符:
var s = "Hello, I must be going"
s.removeAtIndex(advance(s.startIndex, 5))
println(s) // prints "Hello I must be going"
当然,在执行此操作之前,您应该始终检查字符串的长度至少为 5!
编辑:正如@MartinR 指出的那样,您可以使用带结束索引的 advance 版本来避免 运行 结束的风险:
let index = advance(s.startIndex, 5, s.endIndex)
if index != s.endIndex { s.removeAtIndex(index) }
一如既往,可选项是你的朋友:
// find returns index of first match,
// as an optional with nil for no match
if let idx = s.characters.index(of:",") {
// this will only be executed if non-nil,
// idx will be the unwrapped result of find
s.removeAtIndex(idx)
}
var hello = "hello world!"
假设我们要删除 "w"。 (它在第 6 个索引位置。)
首先:为那个位置创建一个索引。 (我正在使 return 类型 Index 明确;这不是必需的)。
let index:Index = hello.startIndex.advancedBy(6)
第二步:调用removeAtIndex()并将我们刚刚创建的索引传递给它。 (注意它 return 是有问题的字符)
let choppedChar:Character = hello.removeAtIndex(index)
print(hello)
// 打印 hello orld!
print(choppedChar)
// 打印 w
Swift 3.2
let str = "hello"
let position = 2
let subStr = str.prefix(upTo: str.index(str.startIndex, offsetBy: position)) + str.suffix(from: str.index(str.startIndex, offsetBy: (position + 1)))
print(subStr)
"helo"
这是一个安全的Swift4实现。
var s = "Hello, I must be going"
var n = 5
if let index = s.index(s.startIndex, offsetBy: n, limitedBy: s.endIndex) {
s.remove(at: index)
print(s) // prints "Hello I must be going"
} else {
print("\(n) is out of range")
}