作为分类实现的 NSMutableString 的字符串操作方法。
pod 'RubyCocoaString'
,运行 pod install
,并通过 #import <RubyCocoaString/NSString+RubyCocoaString.h>
导入头文件来 Import。NSString+RubyCocoaString.{h,m}
复制到您的项目中,并按需通过 #import "NSString+RubyCocoaString.h"
导入。NSString
操作,虽然功能更加完善,但与 Ruby、Python 等现代脚本语言相比,仍然非常冗长且负担沉重。RubyCocoaString 将来自 Ruby 的字符串操作方法作为分类引入到 NSMutableString
中。尽可能保留了这些方法的 Ruby 实现的语义,当发现不一致性时,欢迎贡献和补丁。
根据需要应用了一些小的 Cocoa 习惯用语。例如,以下 Ruby 代码
"".empty?
"foo".end_with? "o"
在 Objective-C 中可用以下代码表示
[@"" isEmpty];
[@"foo" endsWith:@"o"];
一些方法也借鉴了 ActiveSupport
,例如 blank?
和 present?
。
目前实现了以下 Ruby 字符串方法
capitalize
center
concat
downcase
end_with?
empty?
gsub
include?
lstrip
ord
prepend
reverse
rstrip
split
start_with?
strip
upcase
lowerCamelize
- 与 camelize
相同,但首字母小写。例如,当 API 返回 foo_bar
并且您希望将其分配给 Objective-C 对象的 fooBar
属性时,非常有用。(允许作为自定义方法对 Ruby 字符串方法进行有品味的变体,尤其是在 iOS/Mac 上,但这并不意味着这是一个包含所有可能的字符串方法的库。欢迎使用拉取请求!)
[@" foo bar " strip];
// => @"foo bar"
["foo_bar" camelize];
// => @"FooBar"
["foo_bar" lowerCamelize];
// => "fooBar"
[@"FooBar" underscore];
// => "foo_bar"
[" \t\n" isBlank];
// => YES
[@"foo bar" endsWith:@"bar"];
// => YES
[@"this is just madness" gsub:@"just" withString:@"pure"];
// => @"this is pure madness"
[@"this is JUST PLAIN madness" gsub:@"[A-Z]+"
withBlock:^(NSString *str, NSRange range) {
return ([str isEqualToString:@"JUST"] ? @"pure" : @"awesome");
}];
// => @"this is pure awesome madness"
[@"foo" eachChar:^(NSString *ch) {
NSLog(@"%@", ch);
}];
// => f
// => o
// => o
[@"telescope" reverse];
// => @"epocselet"
gsub
有一些高级的语义化使用情形,这些情形的实现较为困难,尽管大多数的使用情形在语义上与其 Ruby 对应项相同。它被用来实现许多 RubyCocoaString 方法。困难的部分在于 Ruby 和 Objective-C 在正则表达式语义和语法上的差异,以及什么被认为是 '匹配'。总是在实现方法之前编写测试用例。非常容易,如果您以前从未在 Xcode 中编写过测试,请随时提问。
git checkout -b my-new-feature
)git commit -am 'Added some feature'
)git push origin my-new-feature
)其他一些注意事项
NSString+RubyCocoaString.{h,m}
中的头文件和实现文件中的方法。