我想调用方法" deleteCharactersInRange"但它没有用。
这是苹果文档的摘录:
斯威夫特
func deleteCharactersInRange(_ aRange:NSRange)
var day = ""
let stringRange:NSRange = NSMakeRange(0, 4)
day = day.deleteCharacterInRange(stringRange)
// I've also tried this, because in the Documentation
// I can't see wether the method is void or returns a String
day.deleteCharacterInRange(stringRange)
我收到此错误消息:
'字符串'没有名为' deleteCharactersInRange'
的成员
答案 0 :(得分:13)
您引用的方法属于NSMutableString。但是既然你正在使用Swift而没有明确地创建一个,那么你得到一个Swift String
。
如果你想在Swift String
上操作,你需要使用str.removeRange
而使用Range
相当尴尬:
var str = "Hello, playground"
str.removeRange(Range<String.Index>(start: str.startIndex, end:advance(str.startIndex, 7)))
// "playground"
答案 1 :(得分:4)
根据 DarkDust 的回答,我们可以制作一个类似Swift的extension
,使removeRange
更容易使用:
extension String {
mutating func deleteCharactersInRange(range: NSRange) {
let startIndex = self.startIndex.advancedBy(range.location)
let length = range.length
self.removeRange(startIndex ..< startIndex.advancedBy(length))
}
}
现在你可以这样使用它:
let range = NSMakeRange(0,4)
var day = "Tuesday"
day.deleteCharactersInRange(range) // day = "day"
答案 2 :(得分:3)
Swift 3的更新
在Swift 3中,需要使用范围运算符a..<b
或a...b
。
var aString = "This is just the beginning"
str.removeRange(Range<String.Index>(str.startIndex ..< str.startIndex.advancedBy(10)))
或更简洁
aString.removeRange(aString.startIndex..<aString.startIndex.advancedBy(10))