2011-12-28 18 views
11

Ad esempio, ho bisogno che l'NSString abbia almeno 8 caratteri .... invece di usare un ciclo per aggiungere gli spazi del pad sinistro su questo, c'è comunque da fare?Come tamponare NSString con spazi?

Examples: 

Input: |Output: 
Hello  | Hello 
Bye  |  Bye 
Very Long |Very Long 
abc  |  abc 
+0

Non sono sicuro di seguire? –

+0

possibile duplicato di [stringa di riempimento a sinistra con obiettivo c] (http://stackoverflow.com/questions/964322/padding-string-to-left-with-objective-c) – Abizern

risposta

17

Ecco un esempio di come si può fare:

int main (int argc, const char * argv[]) { 
    NSString *str = @"Hello"; 
    int add = 8-[str length]; 
    if (add > 0) { 
     NSString *pad = [[NSString string] stringByPaddingToLength:add withString:@" " startingAtIndex:0]; 
     str = [pad stringByAppendingString:str]; 
    } 
    NSLog(@"'%@'", str); 
    return 0; 
} 
+4

Perché dovresti farlo in questo modo? Questo è già ciò che 'stringByPaddingToLength: withString: startingAtIndex:' fa. Si può semplicemente sbarazzarsi di tutto dopo la dichiarazione di 'str' e invece fare' NSLog (@ "% @", [str StringByPaddingToLength: add withString: @ "" startingAtIndex: 0]) ' – Chuck

+0

@Chuck Sì, quello era il mio idea iniziale Sfortunatamente, la mia comprensione è che il padding pad di metodo si trova solo a destra, sovrascrivendo i caratteri dall'indice. In altre parole, se inizi a zero, otterrai una stringa di otto spazi. – dasblinkenlight

+0

Ah, hai ragione, chiaramente non ho letto correttamente la domanda. Non preoccuparti di me. – Chuck

8

Io faccio solo qualcosa di simile:

NSLog(@"%*c%@", 14 - theString.length, ' ', theString); 

Inoltre, 14 è la larghezza desiderata.

+2

Questo è rotto, cosa diavolo significa? –

+0

Va bene se la lunghezza è impostata su int e theString è inferiore a 14. –

-2

se hai bisogno della stessa risposta in un metodo, ho dovuto crearne uno da usare nei miei progetti. codice originale dashblinkenlight

- (NSString *) LeftPadString: (NSString*) originalString LengthAfterPadding: (int)len paddingCharacter: (char) pad 
{ 
int add = (int) (len - originalString.length); 

NSString* paddingCharString = [NSString stringWithFormat:@"%c" , pad]; 

if (add > 0) 
{ 
    NSString *pad = [[NSString string] stringByPaddingToLength:add withString: paddingCharString startingAtIndex:0]; 
    return [pad stringByAppendingString:originalString]; 
} 
else 
    return originalString; 
} 
+0

'- (NSString *) stringByPaddingToLength: (NSUInteger) newLength withString: (NSString *) padString startingAtIndex: (NSUInteger) padIndex;' –

Problemi correlati