Замена двойных кавычек из json цель запроса c - PullRequest
0 голосов
/ 27 марта 2020

Застрявший ниже.

Я собираюсь заменить "" (двойные кавычки) из текста текстового поля и отправить этот текст в json параметре запроса, но приведенный ниже код не работает

NSString * mString = textfield.text; // Input through ipad/iphone/simulator keypad.

[mString replaceOccurrencesOfString:@"\"" withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [mString length])];.

Но если я хардкод NSString * mString = @"\"test"; // Работает ввод через xcode

replaceOccurrencesOfString:.

Проблема с кодировкой ввода Двойная кавычка .?

Почему двойная кавычка с ipad / iphone / simulator Клавиатура не работает так же, как xcode Двойная кавычка.

Спасибо.

1 Ответ

0 голосов
/ 27 марта 2020

По умолчанию клавиатура iOS использует «умные» кавычки ... она использует left double quotation mark при открытии части строки в кавычках и right double quotation mark при закрытии части в кавычках.

Так чтобы убрать их, вам нужно заменить двойные кавычки И левые двойные кавычки И правые двойные кавычки.

Вот краткий пример:

NSString *origString = _myTextField.text;
NSString *strippedString = [origString copy];

NSArray *replaceChars = @[@"”", @"“", @"\""];

for (NSString *c in replaceChars) {
    strippedString = [strippedString
                      stringByReplacingOccurrencesOfString:c
                      withString:@""];
}

NSLog(@"Orig: [%@] / Stripped: [%@]", origString, strippedString);

Пример вывода:

Orig: [“test”] / Stripped: [test]

Вы должны присмотреться, но вы увидите левую и правую двойные кавычки.


Редактировать

Гораздо более лаконичный способ:

NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"”“\""];
NSString *strippedString = [origString stringByTrimmingCharactersInSet:set];
NSLog(@"Orig: [%@] / Stripped: [%@]", origString, strippedString);

Но, как отметил Султан, вам, возможно, придется подумать о пунктуации на других языках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...