2012-01-26 59 views
6

Objective-c中是否存在一個字符串字面形式,它不需要轉義特殊字符?換句話說,我正在尋找一個相當於Python三重引語。字符串文字無需轉義特殊字符?

我試圖把一些HTML放入NSString,並且想避免必須從所有HTML屬性中引用引號。

+1

你可以使用單引號您的HTML,以避免逃脫它們。 – omz

+0

在C++ 11中,你可以做到這一點。見[我的回答] [1]到[類似的問題] [2]。這在你的情況下需要Objective-C++ 11。它應該工作。 [1]:http://stackoverflow.com/questions/1135841/c-multiline-string-literal/5460235#5460235 [2]:http://stackoverflow.com/questions/1135841/c-multiline -string-literal – emsr

+0

請注意,自從Swift 4開始實施「三重報價」後,請參閱:https://stackoverflow.com/a/47567770/897465 – netigger

回答

2

有沒有相當於三報價;字符串文字必須總是使用特殊字符的轉義字符。

也許最好的做法是將HTML放入與源文件分開的文件中,然後使用-[NSString initWithContentsOfFile:encoding:error:](或相關的initWithContentsOfURL:...)創建字符串。

3

在C++ 11中,您可以執行此操作。見my answersimilar question

爲此,你需要在你的情況Objective-C++ 11。它應該在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至少編譯。

+0

不錯。我立場糾正。 – smparkes

0

對於任何人閱讀這現在:

此功能已自斯威夫特4.閱讀中實現更多關於它在這裏:https://github.com/apple/swift-evolution/blob/master/proposals/0168-multi-line-string-literals.md

你可以這樣做:

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