2012-08-15 22 views
26

Quiero colocar una cadena dentro de una cadena. Básicamente en pseudo código:Concatenar cadena en cadena Objetivo-c

"first part of string" + "(varying string)" + "third part of string" 

¿Cómo puedo hacer esto en Objective-C? ¿Hay alguna manera de concatenar fácilmente en obj-c? ¡Gracias!

+0

Muchas respuestas a continuación, [aquí] (https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/ clm/NSString/stringWithFormat :) es la documentación en stringWithFormat. –

+3

'[NSString stringWithFormat: @" Solo google '% @'! ", @" Http://www.google.hu/search?q=nsstring+class+reference&ie=UTF-8&oe=UTF-8&hl=en-gb&client = safari "];' –

+1

@ H2CO3 aún puede ser aceptado aunque – Dustin

Respuesta

78

Sí, lo hacen

NSString *str = [NSString stringWithFormat: @"first part %@ second part", varyingString]; 

para la concatenación puede utilizar stringByAppendingString

NSString *str = @"hello "; 
str = [str stringByAppendingString:@"world"]; //str is now "hello world" 

Para múltiples cadenas

NSString *varyingString1 = @"hello"; 
NSString *varyingString2 = @"world"; 
NSString *str = [NSString stringWithFormat: @"%@ %@", varyingString1, varyingString2]; 
//str is now "hello world" 
+0

¿Esto funcionaría para numerosas cadenas? ¿Te gustan varios% @ y do varyingString, varyingString2? – jsttn

6

Normalmente usaría -stringWithFormat aquí.

NSString *myString = [NSString stringWithFormat:@"%@%@%@", @"some text", stringVariable, @"some more text"]; 
+0

Esta es realmente la mejor manera cuando tiene una cadena grande que está creando, digamos un XML. – ConfusedDeer

9
NSString * varyingString = ...; 
NSString * cat = [NSString stringWithFormat:@"%s%@%@", 
    "first part of string", 
    varyingString, 
    @"third part of string"]; 

o simplemente -[NSString stringByAppendingString:]

3

Eso sí,

NSString* newString=[NSString stringWithFormat:@"first part of string (%@) third part of string", @"foo"]; 

Esto le da

@"first part of string (foo) third part of string" 
8

Variaciones sobre un tema:

NSString *varying = @"whatever it is"; 
NSString *final = [NSString stringWithFormat:@"first part %@ third part", varying]; 

NSString *varying = @"whatever it is"; 
NSString *final = [[@"first part" stringByAppendingString:varying] stringByAppendingString:@"second part"]; 

NSMutableString *final = [NSMutableString stringWithString:@"first part"]; 
[final appendFormat:@"%@ third part", varying]; 

NSMutableString *final = [NSMutableString stringWithString:@"first part"]; 
[final appendString:varying]; 
[final appendString:@"third part"]; 
0

simple:

[[@"first" stringByAppendingString:@"second"] stringByAppendingString:@"third"]; 

si tiene muchas cuerdas concatenar, se debe utilizar NSMutableString para un mejor rendimiento

0

Iam sorprendido de que ninguno de los las respuestas más importantes señalaron que en las versiones recientes de Objective-C (después de que hayan agregado li terals), puede concatenar como este:

@"first" @"second" 

Y el resultado será:

@"firstsecond" 

No se puede utilizar con objetos NSString, solamente con literales, pero puede ser útil en algunos casos.

Cuestiones relacionadas