Как заставить Swift распознавать апостроф?
Я пытаюсь заменить все символы апострофа (') в строке другим символом. Я запускаю этот код:
someString.replacingOccurrences(of: apost, with: "a")
Я попытался, чтобы апост соответствовал следующему:
apost = "\'"
apost = #"'"#
apost = "'"
Ни один из них не удалил апостроф из someString.
Пожалуйста, дайте мне знать, есть ли способ заставить Swift заменить апостроф. Спасибо.
5 ответов
Some String.replacingOccurrences(...) возвращает новый строковый объект с замененными апострофами. Исходный someString этим не изменяется. Тебе нужно
someString = someString.replacingOccurences(...).
Если это произошло, включите больше предупреждений в Xcode (или посмотрите предупреждения). В моей настройке это не было бы скомпилировано из-за неиспользованного возвращаемого значения.
Я была такая же проблема. Это потому, что апостроф - неправильный символ; это должен быть типографский (или «фигурный») апостроф (
’
), а не пишущий (или «прямой») апостроф (
'
). Скопируйте и вставьте приведенный ниже код или только правильный символ апострофа:
searchQuery = searchQuery.replacingOccurrences(of: "’", with: "")
У меня была такая же проблема с тем, что он не распознавал апострофии или одинарные кавычки. Чтобы найти и заменить их, используйте юникод для каждого символа. Это сработало для меня.
let str = "mark's new name is 'mike'"
// apostrophe
var modstr = str.replacingOccurences(of: "\u{0027"}, with "")
// left single quote
modstr = modstr.replacingOccurences(of: "\u{2018"}, with "")
// right single quote
modstr = modstr.replacingOccurences(of: "\u{2019"}, with "")
// output
print(modstr)
Выход:
marks new name is mike
Fixed it. Gnasher was right, I was using a different apostrophe than the one used in the input string. Who knew there were multiple types of damn apostrophes.
Вы можете назначить символ сравнения для апострофа как char charToCompare = (char)8217;