如何以编程方式从 NSString 中删除特定字符?
Posted
技术标签:
【中文标题】如何以编程方式从 NSString 中删除特定字符?【英文标题】:How can I remove specific characters from an NSString programmatically? 【发布时间】:2012-11-09 13:49:51 【问题描述】:我需要帮助过滤 NSString。假设我有一个名为 myString 的字符串。
NSString *myString = @"HelloWorld";
如何过滤掉“你好”这个词。或者如果我想删除前五个字母,如何删除特定数量的字母(以它开头)。
我面临的另一个例子:
NSString *myString = @"Hello hi World";
同样,我想删除“Hello”和之后的空格。还有一次我可能想删除“Hello hi”这两个词和之后的空格,这样就只剩下“World”了。
请有人解释在 NSStrings 中删除字符的基础知识吗?我对 Objective-c 的世界完全陌生,阅读类参考让我更加困惑。我只有 12 岁,所以不要因为不理解类参考而对我苛刻。
【问题讨论】:
阅读 NSString 类参考。如果您仍然不知道该怎么做,请发布一些代码并再次询问。 我想知道的是,您之前是如何以非编程方式删除它们的? 【参考方案1】:对于这种情况,您需要一个 NSMutableString:
NSMutableString *mutableString = @"Hello World";
[mutableString deleteCharactersInRange:NSMakeRange([mutableString length]-11, 6)];
NSLog (@"%@", mutableString);
NSMakeRange 的解释:首先你走到字符串的末尾并倒数长度(11)。现在你在“H”字符上。现在您删除以下六个字符。 “世界”现在剩下了。
【讨论】:
谢谢,很高兴能帮到你!【参考方案2】:NSString 有很多方法可以做几乎所有事情,但需要考虑的是 NSString 是不可变的,所以所有这些方法都返回一个新字符串。如果这成为问题,您可以查看 NSMutableString ,它具有操作当前字符串的方法。
【讨论】:
【参考方案3】:你不能编辑 NSString 对象,它是不可变的。您应该改用 NSMutableString。
【讨论】:
【参考方案4】: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"
【讨论】:
以上是关于如何以编程方式从 NSString 中删除特定字符?的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式将 NSData 转换为 NSString? [复制]