当前位置:  开发笔记 > 编程语言 > 正文

通过重复给定次数的另一个字符串来创建NSString

如何解决《通过重复给定次数的另一个字符串来创建NSString》经验,为你挑选了2个好方法。

这应该很简单,但我很难找到最简单的解决方案.

我需要一个NSString等于另一个与自身连接一次的字符串.

有关更好的解释,请考虑以下python示例:

>> original = "abc"
"abc"
>> times = 2
2
>> result = original * times
"abcabc"

任何提示?


编辑:

在看完OmniFrameworks的这个实现之后,我将发布一个类似Mike McMaster答案的解决方案:

// returns a string consisting of 'aLenght' spaces
+ (NSString *)spacesOfLength:(unsigned int)aLength;
{
static NSMutableString *spaces = nil;
static NSLock *spacesLock;
static unsigned int spacesLength;

if (!spaces) {
spaces = [@"                " mutableCopy];
spacesLength = [spaces length];
    spacesLock = [[NSLock alloc] init];
}
if (spacesLength < aLength) {
    [spacesLock lock];
    while (spacesLength < aLength) {
        [spaces appendString:spaces];
        spacesLength += spacesLength;
    }
    [spacesLock unlock];
}
return [spaces substringToIndex:aLength];
}

从文件中复制的代码:

Frameworks/OmniFoundation/OpenStepExtensions.subproj/NSString-OFExtensions.m

从该OpenExtensions框架全框架由奥姆尼集团.



1> tig..:

有一种方法叫做stringByPaddingToLength:withString:startingAtIndex::

[@"" stringByPaddingToLength:100 withString: @"abc" startingAtIndex:0]

请注意,如果你想要3个abc,那么使用9(3 * [@"abc" length])或创建如下类别:

@interface NSString (Repeat)

- (NSString *)repeatTimes:(NSUInteger)times;

@end

@implementation NSString (Repeat)

- (NSString *)repeatTimes:(NSUInteger)times {
  return [@"" stringByPaddingToLength:times * [self length] withString:self startingAtIndex:0];
}

@end


+1只需一次调用标准库即可完成所有操作.以下是我用它来创建一个以逗号分隔的问号列表(用于提供给SQLite) - `[@""stringByPaddingToLength:[fields count]*2-1 withString:@"?,"startingAtIndex:0] `.

2> Mike McMaste..:
NSString *original = @"abc";
int times = 2;

// Capacity does not limit the length, it's just an initial capacity
NSMutableString *result = [NSMutableString stringWithCapacity:[original length] * times]; 

int i;
for (i = 0; i < times; i++)
    [result appendString:original];

NSLog(@"result: %@", result); // prints "abcabc"

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有