objective-c - 替换 NSString 特定部分内的文本

标签 objective-c cocoa

是否可以更改 NSString 特定部分内的文本?例如,我想使用 stringByReplacingOccurrencesOfString,但仅限于字符串的特定部分。在此示例中,我只想替换 #q= 之后和 &lang=en-us 之前的 #。像这样:

初始字符串:https://google.com/search#q=hello#&lang=en-us

应替换为:https://google.com/search#q=hello%23&lang=en-us

如果我告诉它用 %23 替换 #,使用 stringByReplacingOccurrencesOfString 会返回什么:https://google. com/search%23q=hello%23&lang=en-us

感谢您的帮助!

最佳答案

你的问题的直接答案是肯定的,你可以使用stringByReplacingOccurrencesOfString:withString:options:range:; range 参数指定应在其中进行替换的字符串部分。

NSString 提供了其他搜索方法,可以帮助您确定合适的 range 值。

话虽如此,您的方法可能相当“脆弱” - 当输入数据发生变化时很容易破坏 - 也许您应该将字符串视为它的本质,一个 URL,并且要么在第一个中使用适当的转义来构造它地方;或者将其解析为各个部分,添加转义,然后重新组装。 NSURLNSString 上有一些方法可以帮助您做到这一点。

HTH

关于objective-c - 替换 NSString 特定部分内的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39670240/

相关文章:

objective-c - 如何在 Mac 版 Cocoa Obj-C 中创建选择页面

cocoa - 修改 NSDatePicker 以自动生成谓词行模板

xml - cocoa 中的 RSA 和 xml 格式的公钥

objective-c - 如何在 arrayController 和 Core Data 上使用谓词

iphone - 单击自定义按钮时如何通过@selector 传递数据?

iphone - 如何接收连接类型已更改的通知(3G、Edge、Wifi、GPRS)

ios - 如何使用 Objective-C 对 TableView 存储的数据进行排序?

objective-c - 如何阻止 NSSavePanel 在完成 block 后关闭?

ios - 以编程方式创建的 ViewController 在 Storyboard 上看起来并不像

ios - 可以在我调用 performSelectorOnMainThread 后释放我的对象