我想根据传入的字符数创建一个字符串。传入的每个字符都是一个“X”。所以举个例子,如果传入的长度是5,那么创建的字符串应该是
NSString *testString=@"XXXXX";
如果是 2 那么它将是
NSString *testString=@"XX";
谁能告诉我最有效的方法是什么?
谢谢!
我想根据传入的字符数创建一个字符串。传入的每个字符都是一个“X”。所以举个例子,如果传入的长度是5,那么创建的字符串应该是
NSString *testString=@"XXXXX";
如果是 2 那么它将是
NSString *testString=@"XX";
谁能告诉我最有效的方法是什么?
谢谢!
如果您知道最大长度是一个合理的数字,那么您可以执行以下简单操作:
- (NSString *)xString:(NSUInteger)length {
static NSString *xs = @"XXXXXXXXXXXXXXXXXXXXXXXXXXX";
return [xs substringToIndex:length];
}
NSString *str = [self xString:5]; // str will be @"XXXXX";
如果你传入的长度过大,应用程序将崩溃 - 将更多X
的 s 添加到xs
.
这种方法比建立一个更有效,NSMutableString
但它确实对您可能需要的最大长度做出了假设。
- (NSString *)stringOf:(NSString *)str times:(NSInteger)count
{
NSMutableString *targ = [[NSMutableString alloc] initWithCapacity:count];
for (int i=0; i < count; i++)
{
[targ appendString:str];
}
return targ;
}
和
[self stringOf:@"X" times:4];
请注意initWithCapacity:
(在性能方面)比 init 更好。但我想这都是为了效率。
我会这样做的方式是
NSMutableString *xString = [[NSMutableString alloc] init];
while ( int i = 0; i < testString.length; i++ ) {
[xString appendString:@"X"];
i++;
}
NSUInteger 一个长度。// 假设这是参数
NSMutableString *xStr = [NSMutableString stringWithCapacity: aLength];
for ( NSUInteger i = 0; i < aLength; i++ ) { [xStr appendFormat:@"X"]; }
以下将在一个电话中完成您的要求:
NSString *result = [@"" stringByPaddingToLength:numberOfCharsWanted
withString:characterToRepeat
startingAtIndex:0];
其中numberOfCharsWanted
是一个NSUInteger
并且characterToRepeat
是一个NSString
包含字符的。