2012-01-26 11 views
6

Esiste una forma stringa letterale in Objective-c che non richiede l'escape di caratteri speciali? In altre parole, sto cercando un equivalente alla tripla citazione di Python.Stringhe letterali senza dover sfuggire a caratteri speciali?

Sto provando a inserire dell'HTML in un NSString e vorrei evitare di dover sfuggire alle virgolette di tutti gli attributi HTML.

+1

è possibile utilizzare le virgolette singole in il tuo codice HTML per evitare di doverli sfuggire. – omz

+0

In C++ 11 puoi farlo. Vedi [la mia risposta] [1] a una [domanda simile] [2]. Questo è necessario nel tuo caso Objective-C++ 11. Dovrebbe funzionare comunque. [1]: http://stackoverflow.com/questions/1135841/c-multiline-string-literal/5460235#5460235 [2]: http://stackoverflow.com/questions/1135841/c-multiline -string-letteral – emsr

+0

Solo una nota, "triple-quote" è stata implementata da Swift 4, vedi: https://stackoverflow.com/a/47567770/897465 – netigger

risposta

2

Non c'è alcun equivalente al triplo quote; i valori letterali stringa devono sempre utilizzare gli escape per caratteri speciali.

Forse la cosa migliore da fare sarebbe mettere il file HTML in un file separato dalla sorgente, quindi creare la stringa usando -[NSString initWithContentsOfFile:encoding:error:] (o il relativo initWithContentsOfURL:...).

3

In C++ 11 è possibile farlo. Vedere my answer a similar question.

Per questo è necessario nel tuo caso Objective-C++ 11. Dovrebbe funzionare anche se in 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 almeno compilazioni.

+0

Nice. Sono corretto. – smparkes

0

Per chiunque leggendo questo ora:

Questa caratteristica è stata implementata dal Swift 4. Per saperne di più qui: https://github.com/apple/swift-evolution/blob/master/proposals/0168-multi-line-string-literals.md

Si può fare:

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> 
""" 
Problemi correlati