To powinno być łatwe, ale ciężko jest mi znaleźć najłatwiejsze rozwiązanie.Utwórz NSString, powtarzając kolejny ciąg z określoną liczbą razy
Potrzebuję NSString
, który jest równy innemu ciągowi połączonemu ze sobą określoną liczbę razy.
Dla lepszego wyjaśnienia, rozważmy następujący przykład Pythona:
>> original = "abc"
"abc"
>> times = 2
2
>> result = original * times
"abcabc"
Wszelkie wskazówki?
EDIT:
miałem zamiar pisać rozwiązanie podobne do tego, by Mike McMaster's answer, po obejrzeniu tego wdrożenia od OmniFrameworks:
// 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];
}
Kod odtworzonego z pliku:
Frameworks/OmniFoundation/OpenStepExtensions.subproj/NSString-OFExtensions.m
w środowisku OpenExtensions z Omni Frameworks przez The Omni Group.
+1 za zrobienie tego wszystkiego w jednym wywołaniu do standardowej biblioteki. A oto, jak go użyłem, aby utworzyć listę znaków zapytania oddzielonych przecinkami (do karmienia SQLite) - "[@" "stringByPaddingToLength: [pola count] * 2-1 withString: @" ?, "startingAtIndex: 0] '. – noamtm