根据预期的字符创建字符串

时间:2013-05-25 00:39:46

标签: ios objective-c

我想根据传入的字符数创建一个字符串。传入的每个字符都是“X”。因此,例如,如果传入的长度为5,则创建的字符串应为

NSString *testString=@"XXXXX";

如果它是2那么它将是

NSString *testString=@"XX";

谁能告诉我最有效的方法是什么?

谢谢!

5 个答案:

答案 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];

其中numberOfCharsWantedNSUIntegercharacterToRepeat是包含该字符的NSString

相关问题