0

我想根据传入的字符数创建一个字符串。传入的每个字符都是一个“X”。所以举个例子,如果传入的长度是5,那么创建的字符串应该是

NSString *testString=@"XXXXX";

如果是 2 那么它将是

NSString *testString=@"XX";

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

谢谢!

4

5 回答 5

5

如果您知道最大长度是一个合理的数字,那么您可以执行以下简单操作:

- (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但它确实对您可能需要的最大长度做出了假设。

于 2013-05-25T01:17:41.310 回答
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 更好。但我想这都是为了效率。

于 2013-05-25T00:48:05.303 回答
1

我会这样做的方式是

NSMutableString *xString = [[NSMutableString alloc] init];
while ( int i = 0; i < testString.length; i++ ) {
    [xString appendString:@"X"];
    i++;
}
于 2013-05-25T00:45:14.457 回答
1

NSUInteger 一个长度。// 假设这是参数

NSMutableString *xStr = [NSMutableString stringWithCapacity: aLength];

for ( NSUInteger i = 0; i < aLength; i++ ) { [xStr appendFormat:@"X"]; }

于 2013-05-25T00:48:36.517 回答
1

以下将在一个电话中完成您的要求:

NSString *result = [@"" stringByPaddingToLength:numberOfCharsWanted
                                     withString:characterToRepeat
                                startingAtIndex:0];

其中numberOfCharsWanted是一个NSUInteger并且characterToRepeat是一个NSString包含字符的。

于 2013-05-25T09:08:06.487 回答