Кавычки Escape в Objective-C

Я использую этот фрагмент кода для кодирования символов, чтобы они были удобны для запроса POST:

<code>   NSString *unescaped = [textField text];
   NSString *escapedString = (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(
                                                                                  NULL,
                                                                                  (__bridge_retained CFStringRef)unescaped,
                                                                                  NULL,
                                                                                  (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                                                  kCFStringEncodingUTF8);
</code>

Который прекрасно работает, но не добавляет escape-кавычки:"

Как мне избежать кавычек в IOS?

Ответы на вопрос(4)

\".

Как в:

(CFStringRef)@"I'm an \"example\""
 Moe12 апр. 2012 г., 11:19
Я знаю это, я хочу, чтобы вы знали, как ввести пользователя" и измените его на:\"

__bridge_retained в вашем актерскомCFStringRef, Просто используйте__bridge.

Во-вторых, вам не нужно выходить из кавычек вручную путем замены строки. Просто добавьте символ кавычки в набор символов, которые будут цитироваться при вызовеCFURLCreateStringByAddingPercentEscapes(), Вот так:

NSString *unescaped = [textField text];
NSString *escapedString = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,
                                                                                    (__bridge CFStringRef)unescaped,
                                                                                    NULL,
                                                                                    CFSTR("!*'();:@&=+$,/?%#[]\""),
                                                                                    kCFStringEncodingUTF8));

(В дополнение к добавлению цитаты в набор, я изменил использоватьCFBridgingRelease() а не__bridge_transfer брошен, потому что я нахожу это яснее. Это удовлетворяет чувство, что все CF "Create" функциям нужен соответствующий «релиз». Кроме того, я изменил использование@"" буквальное приведение кCFStringRef простоCFSTR("") буквальный.)

вместо использования & quot; непосредственно ...

Специальные символы, такие как кавычки, косые черты и другие, требуют, чтобы этот символ удалил его специальные функции.

Решение Вопроса

Мне нужно было взять введенный пользователем NSString из[textField text] и убедитесь, что если в строке есть кавычки, они должным образом экранируются для отправки через оператор POST.

Мое решение было:

unescaped = [unescaped stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];

Спасибо

 09 дек. 2014 г., 20:00
почему бы не использовать NSRegularExpression & quot; escapedPatternForString: & quot; метод класса?

Ваш ответ на вопрос