如何以编程方式从NSString中删除特定字符?

时间:2012-11-09 13:49:52

标签: iphone objective-c ios xcode nsstring

我需要帮助过滤NSStrings。假设我有一个名为myString的字符串。

NSString *myString = @"HelloWorld";

如何从中过滤掉“Hello”字样。或者,如果我想删除前五个字母,我该如何删除特定数量的字母(以它开头)。

我面临的另一个例子:

NSString *myString = @"Hello hi World"; 

同样,我想删除“Hello”以及之后的空格。另一次,我可能想要删除两个单词“Hello hi”以及之后的空格,以便只剩下“World”。

有人可以解释删除NSStrings中字符的基础知识吗?我对Objective-c的世界全新了,阅读课程参考让我更加困惑。我只有12岁,所以不要因为不理解课堂参考而苛刻。

4 个答案:

答案 0 :(得分:1)

对于这种情况,您需要一个NSMutableString:

NSMutableString *mutableString = @"Hello World";
[mutableString deleteCharactersInRange:NSMakeRange([mutableString length]-11, 6)];
NSLog (@"%@", mutableString);

NSMakeRange的说明:首先,您转到字符串的末尾并计算长度(11)。现在你处于“H”字符。现在删除以下六个字符。 “世界”现在遗留下来。

答案 1 :(得分:0)

NSString有很多方法可以做几乎所有事情,但需要考虑的是NSString是不可变的,因此所有这些方法都返回一个新的字符串。如果这成为问题,您可以查看具有操作当前字符串的方法的NSMutableString。

答案 2 :(得分:0)

你不能编辑NSString对象,它是不可变的。你应该使用NSMutableString。

答案 3 :(得分:0)

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"