2009-05-07 17 views
33

Me siento increíblemente estúpido por preguntar esto, pero la documentación y Google no nos están dando ningún amor en absoluto.¿Cómo puedo escapar de un carácter Unicode en mi código fuente Objective-C?

Tengo un carácter Unicode que quiero insertar en un literal de cadena en el código fuente de mi aplicación de iPhone. Sé su valor hexadecimal ¿Cuál es la secuencia de escape adecuada para usar? Y para el caso, ¿qué fuente obvia de información estoy pasando por alto que me habría dicho esto?

+0

Pregunta/respuesta similar para Swift: http://stackoverflow.com/questions/31284538/how-to-express-strings-in-swift-using-unicode-hexadecimal-values-utf-16 – Suragch

Respuesta

56

Ejemplo:

NSString *stuff = @"The Greek letter Beta looks like this: \u03b2, and the emoji for books looks like this: \U0001F4DA"; 
+1

Eso lo hizo. ¡Gracias! –

+3

No necesita escapar. Por defecto, el editor y el compilador interpretarán el archivo de código fuente como UTF8. Puede usar cualquier caracter Unicode en sus constantes de cadena. Esto no era cierto antes de la cadena de herramientas Mac OS X 10.5. – Ken

+0

También depende de las fuentes que use. Hay algunas fuentes que no admiten todos los unicodes. –

1

La secuencia de escape adecuada sería algo en la línea de

wchar_t * str = L"\x0627"; 

Ver esta pregunta: character constant:\000 \xhh

Editar: Oh, lo siento, me perdí el iPhone y etiquetas de Objective-C. Lo anterior es válido para C/C++ genérico, pero no he trabajado con el desarrollo de iPhone por lo que su kilometraje puede variar.

+0

Funciona: " \ u0024 "\t para UTF-16 y" \ x24 "para UTF-8 en Objective-C, respectivamente" \ u {0024} "y" \ u {24} "en Swift; mi respuesta no se refiere a los caracteres anchos – tontonCD

+0

Yay, también funciona para unichar y caracteres literales, e g 'unichar x = L '•';'. (bueno si estás trabajando con NSString y getCharacters/stringWithCharacters) – nevyn

10

Si no desea ponerlo directamente en la cadena se puede usar un especificador de formato como el siguiente:

[string stringByAppendingFormat:@"%C", 0x2665]; 
-3

\ es el carácter de escape en Objective C , úselo antes de la letra para escaparse como:

NSString temp = @" hello \"temporary.h\" has been inported"; 

Aquí si imprime el secuencia temporal en TextView o registros, verá " está imprimiendo así porque hemos utilizado el \ delante de ellos, que es el carácter de escape

+0

Esto no responde la pregunta, ya que no explica cómo el carácter de escape '\' le permite insertar un carácter Unicode. – Supuhstar

3

Un enfoque más moderno:

No estoy seguro de que cuando esta función era agregado al idioma, pero a partir de 2015, al menos, literales de cadena Objective-C pueden contener cualquier carácter Unicode. Por ejemplo, me recuerda mis líneas de registro con emoji porque sus colores distintivos son una forma más fácil para mí para recoger a cabo:

message:@" \n \n\t‼️ Error: %@"

Por lo tanto, si usted tiene el carácter y no sólo el punto de código, y Si quieres usarlo en una cadena estática y no generarlo dinámicamente, este es un gran enfoque, ya que al instante sabes qué personaje estás usando con solo mirarlo.

+1

Esto ha sido "siempre" el caso, para valores de "siempre" que se extienden al menos hasta la introducción de LLVM, incluso antes. –

+0

@ BrentRoyal-Gordon gracias! Ahora sé – Supuhstar

Cuestiones relacionadas