Bro*_*olf 1 ruby python string objective-c objective-c++
目前我正在开发一款软件,目前使用iPhone 3.0 SDK在Objective-C中100%编写.
我来到了一个十字路口,我需要做很多或字符串连接,更具体地说,NSString连接,到目前为止,我一直这样做:
Objective-C字符串连接:
NSString *resultantString = (NSMutableString*)[@"Hello " stringByAppendingString: @"World"];
Run Code Online (Sandbox Code Playgroud)
现在你可以想象,当我尝试将6个NSStrings连接在一起时,这很难理解.
起初,我打算在Objective-C++类中混合以进行字符串连接并将其交还给我的Objective-C类,因为我可以使用C++的简单字符串连接,如:
C++字符串连接:
string cppString = "Hello" + "World" + "see" + "easy!";
Run Code Online (Sandbox Code Playgroud)
我可以使用C char数组,但这会更难阅读.
然后让我感到震惊的是,我可以在Cocoa中使用Python或Ruby桥接器(它提供了正则表达式和高级字符串处理的额外奖励,而不是基于C语言的处理).
这对我来说很有意义,尽管我只编写了少量的Ruby和Python,因为它们被称为字符串操作语言.Perl我决定跳过,因为Xcode没有直接支持它.
我也对性能感兴趣,所以我正在寻找最快的方法来进行字符串连接.
所以我该怎么做?在Objective-C中是否有一些狡猾的简单方法来连接多个字符串一次说10个字符串?或者我的想法是使用Python或Ruby类方法来返回连接或正则表达式修改后的字符串,而不是听起来非常疯狂?也许我甚至错过了另一种方式来做到这一点?
更新: 是的.考虑到拉动另一个语言运行时进行字符串操作,我似乎很疯狂,特别是因为我注意到我关注速度.添加网桥可能比简单地使用NSString/NSMutableString要慢得多.
对于固定大小的连接,您可以使用[NSString stringWithFormat:]
如下:
NSString *str = [NSString stringWithFormat:@"%@ %@ %@",
@"Hello", @"World", @"Yay!"];
Run Code Online (Sandbox Code Playgroud)
你可以使用join操作.
NSArray *chunks = ... get an array, say by splitting it;
string = [chunks componentsJoinedByString: @" :-) "];
Run Code Online (Sandbox Code Playgroud)
会产生像oop :-) ack :-) bork :-) greeble :-) ponies