Строковые литералы без экранирования специальных символов? - PullRequest
6 голосов
/ 27 января 2012

Существует ли строковый литерал в Objective-c, который не требует экранирования специальных символов? Другими словами, я ищу эквивалент тройной кавычки Python.

Я пытаюсь поместить немного HTML в NSString и хотел бы избежать экранирования кавычек из всех атрибутов HTML.

Ответы [ 4 ]

3 голосов
/ 27 января 2012

В C ++ 11 вы можете сделать это. См. мой ответ на аналогичный вопрос .

Для этого вам требуется в вашем случае 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 по крайней мере компилируется.

2 голосов
/ 27 января 2012

Нет эквивалента тройной кавычке; строковые литералы всегда должны использовать экранирование для специальных символов.

Возможно, лучше всего было бы поместить ваш HTML в файл, отдельный от вашего источника, а затем создать строку, используя -[NSString initWithContentsOfFile:encoding:error:] (или связанный initWithContentsOfURL:...).

1 голос
/ 27 января 2012

Нет, к сожалению, нет ... здесь есть отличная информация о строковых литералах в obj-c:
http://blog.ablepear.com/2010/07/objective-c-tuesdays-string-literals.html

0 голосов
/ 30 ноября 2017

Для тех, кто читает это сейчас:

Эта функция была реализована со времен Swift 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>
"""
...