2012-01-26 673 views
6

¿Hay una forma literal de cadena en Objective-c que no requiera el escape de caracteres especiales? En otras palabras, estoy buscando un equivalente a la cita triple de Python.Cadenas literales sin tener que escapar de los caracteres especiales?

Estoy tratando de poner algo de HTML en un NSString, y me gustaría evitar tener que escapar de las comillas de todos los atributos HTML.

+1

usted podría utilizar comillas simples en su HTML para evitar tener que escapar de ellos. – omz

+0

En C++ 11 puedes hacer esto. Ver [mi respuesta] [1] a una [pregunta similar] [2]. Esto lo requiere en su caso Objective-C++ 11. Debería funcionar sin embargo. [1]: http://stackoverflow.com/questions/1135841/c-multiline-string-literal/5460235#5460235 [2]: http://stackoverflow.com/questions/1135841/c-multiline -string-literal – emsr

+0

Solo una nota, "triple-quote" se ha implementado desde Swift 4, ver: https://stackoverflow.com/a/47567770/897465 – netigger

Respuesta

2

No hay equivalente al triple cita; los literales de cadena siempre deben usar escapes para caracteres especiales.

Quizás la mejor cosa a hacer sería poner su HTML en un archivo separado de su fuente, luego cree la cadena usando -[NSString initWithContentsOfFile:encoding:error:] (o el initWithContentsOfURL:... relacionado).

3

En C++ 11 puede hacerlo. Vea my answer a un similar question.

Para esto necesita en su caso Objective-C++ 11. Debería funcionar en gcc.

const char * html = R"HTML(
<HTML> 
<HEAD> 
    <TITLE> [Python-Dev] Triple-quoted strings and indentation 
    </TITLE> 
</HEAD> 
<BODY BGCOLOR="#ffffff"> 
    blah blah blah 
</BODY> 
</HTML> 
)HTML"; 

int 
main() 
{ 
} 

g ++ -std = C++ 0x -o raw_string raw_string.mm al menos compila.

+0

Nice. Estoy corregido. – smparkes

0

Para cualquiera que lea esto ahora:

Esta característica se ha implementado desde el Swift 4. Leer más sobre ello aquí: https://github.com/apple/swift-evolution/blob/master/proposals/0168-multi-line-string-literals.md

Usted puede hacer:

let author = "Im the author!" 
let x = """ 
    <?xml version="1.0"?> 
    <catalog> 
     <book id="bk101" empty=""> 
      <author>\(author)</author> 
      <title>XML Developer's Guide</title> 
      <genre>Computer</genre> 
      <price>44.95</price> 
      <publish_date>2000-10-01</publish_date> 
      <description>An in-depth look at creating applications with XML.</description> 
     </book> 
    </catalog> 
""" 
Cuestiones relacionadas