我需要过滤NSString的帮助。假设我有一个名为myString的字符串。
NSString *myString = @"HelloWorld";
如何从中过滤出“ Hello”一词。或者,如果我想删除前五个字母,如何删除特定数量的字母(以字母开头)。
我正面临的另一个例子:
NSString *myString = @"Hello hi World";
类似地,我想删除“ Hello”及之后的空格。下次我可能要删除两个单词“ Hello hi”和其后的空格,以便仅保留“ World”。
[有人可以解释在NSString中删除字符的基础吗?我对Objective-C完全陌生,阅读类引用使我更加困惑。我只有12岁,所以不要因为不了解类引用而对我苛刻。
在这种情况下,您需要一个NSMutableString:
NSMutableString *mutableString = @"Hello World";
[mutableString deleteCharactersInRange:NSMakeRange([mutableString length]-11, 6)];
NSLog (@"%@", mutableString);
NSMakeRange的解释:首先,您到达字符串的末尾并计算长度(11)。现在,您使用的是“ H”字符。现在,您删除以下六个字符。现在剩下“世界”。
NSString有很多方法可以执行几乎所有操作,但是要考虑的一点是NSString是不可变的,因此所有这些方法都返回一个新字符串。如果这成为问题,则可以查看NSMutableString,其中包含用于操作当前字符串的方法。
您无法编辑NSString对象,它是不可变的。您应该改用NSMutableString。
Xcode 9•Swift 4或更高版本
这两种从字符串中删除字符的方法:
dropLast()返回一个可选值,因此可以为nil。removeLast()返回最后一个字符,不是可选的,因此如果字符串为空,它将崩溃。
let string = "Hello World"
let substring1 = String(string.dropFirst()) // "ello World"
let substring2 = String(string.dropFirst(2)) // "llo World"
let substring3 = String(string.dropLast()) // "Hello Worl"
let substring4 = String(string.dropLast(2)) // "Hello Wor"