我想根据传入的字符数创建一个字符串。传入的每个字符都是“X”。因此,例如,如果传入的长度为5,则创建的字符串应为
NSString *testString=@"XXXXX";
如果它是2那么它将是
NSString *testString=@"XX";
谁能告诉我最有效的方法是什么?
谢谢!
答案 0 :(得分:5)
如果您知道最大长度是一个合理的数字,那么您可以做这样简单的事情:
- (NSString *)xString:(NSUInteger)length {
static NSString *xs = @"XXXXXXXXXXXXXXXXXXXXXXXXXXX";
return [xs substringToIndex:length];
}
NSString *str = [self xString:5]; // str will be @"XXXXX";
如果您传入的内容太长,应用会崩溃 - 向X
添加更多xs
。
这种方法比构建NSMutableString
更有效,但它确实假设您可能需要的最大长度。
答案 1 :(得分:2)
- (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。但我想这完全取决于效率。
答案 2 :(得分:1)
我这样做的方式是
NSMutableString *xString = [[NSMutableString alloc] init];
while ( int i = 0; i < testString.length; i++ ) {
[xString appendString:@"X"];
i++;
}
答案 3 :(得分:1)
NSUInteger aLength。 //假设这是参数
NSMutableString * xStr = [NSMutableString stringWithCapacity:aLength];
for(NSUInteger i = 0; i&lt; aLength; i ++){ [xStr appendFormat:@“X”]; }
答案 4 :(得分:1)
以下内容将通过一个电话完成您的要求:
NSString *result = [@"" stringByPaddingToLength:numberOfCharsWanted
withString:characterToRepeat
startingAtIndex:0];
其中numberOfCharsWanted
是NSUInteger
而characterToRepeat
是包含该字符的NSString
。