如何在 Objective C 中根据大小写(即大写字母)拆分 NSString?
使用 Objective C,根据大小写拆分 NSString 的最佳方法是什么,例如 @"MyNameOfSomething" --> [NSArray arrayWithObjects: @"My", @"Name", @"Of, @"Something"].
我想在不使用第三方正则表达式库的情况下执行此操作,因为我不需要正则表达式功能对于程序中的其他内容,
我的目标是比 iOS5/Lion 更旧的版本,所以我知道这可以用 NSScanner 完成,但我希望有人有一个现成的。 解决方案。
Using Objective C, what would be the best way to split an NSString based on capitalization, e.g. @"MyNameOfSomething" --> [NSArray arrayWithObjects: @"My", @"Name", @"Of, @"Something"].
I would like to do this without using a third-party regex library, since I will not need regex functionality for anything else in the program.
UPDATE: I'm targeting older versions than iOS5/Lion, so no NSRegularExpression. I know this can be done with NSScanner, but I was hoping somebody had a ready-made solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
干得好:
Here you go:
如果您使用的是 iOS5/Mac OSX 10.7,您可以使用 NSRegularExpression 来获取大写字母的位置。 (然后使用 substringWithRange:) 如果您需要向后兼容性,NSScanner 是您(效率低下)的朋友。
If you are on iOS5/Mac OSX 10.7 you can use NSRegularExpression to get the positions of capitalized letters. (and then use substringWithRange:) If you need backwards compatibility, NSScanner is your (inefficient) friend.
您可以使用正则表达式来执行此操作。使用 http://rubular.com 测试您的正则表达式和 RegexKitLite (http://regexkit.sourceforge.net/RegexKitLite/) 将 Regex 功能添加到您的应用程序中。
这是一个可以解决问题的正则表达式(它选择 NSString 中的所有大写字母):
[AZ]
我不确定,但我认为您可以利用此方法
- ( NSArray *)componentsSeparatedByRegex:(NSString *)regex options:(RKLRegexOptions)options range:(NSRange)range error:(NSError **)error;
执行您想要的操作。这样做的好处是它可以在 10.5 上运行,而且实现起来非常简单!
You can use a regular expression to do this. Use http://rubular.com to test your Regular Expressions, and RegexKitLite (http://regexkit.sourceforge.net/RegexKitLite/) to add Regex functionnality to your application.
Here's a regular expression that should do the trick (it selects all capitals in the NSString):
[A-Z]
I'm not sure, but I think you can take advantage of this method
- (NSArray *)componentsSeparatedByRegex:(NSString *)regex options:(RKLRegexOptions)options range:(NSRange)range error:(NSError **)error;
to do what you want.The advantage of this is it works on 10.5, and it's really simple to implement !