2011-12-28 18 views
11

Por ejemplo, necesito que el NSString tenga al menos 8 caracteres ... en lugar de usar un bucle para agregar los espacios del panel izquierdo en esto, ¿hay alguna forma de hacerlo?Cómo rellenar NSString con espacios?

Examples: 

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

No estoy seguro de seguir? –

+0

posible duplicado de [Cadena de relleno a la izquierda con objetivo c] (http://stackoverflow.com/questions/964322/padding-string-to-left-with-objective-c) – Abizern

Respuesta

17

Aquí es un ejemplo de cómo puede hacerlo:

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

¿Por qué lo haría de esta manera? Esto ya es lo que hace 'stringByPaddingToLength: withString: startingAtIndex:'. Podrías deshacerte de todo después de la declaración de 'str' y en cambio hacer' NSLog (@ "% @", [str stringByPaddingToLength: agregar withString: @ "" startingAtIndex: 0]) ' – Chuck

+0

@Chuck Sí, ese era mi idea inicial Lamentablemente, tengo entendido que el método de relleno solo se ajusta a la derecha, sobrescribiendo los caracteres del índice. En otras palabras, si comenzaste en cero, obtendrías una cadena de ocho espacios. – dasblinkenlight

+0

Ah, tienes razón, claramente no leí la pregunta correctamente. No me importa. – Chuck

8

acabo de hacer algo como esto:

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

Por otra parte, 14 es el ancho que desee.

+2

Esto está roto, ¿qué diablos significa eso? –

+0

Está bien si la longitud se convierte en int y elString es más corto que 14. –

-2

si necesita la misma respuesta en un método, tuve que crear una para usar en mis proyectos. código original por 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;' –

Cuestiones relacionadas