До iOS 11 кавычки по умолчанию были ASCII '
и "
, но теперь они изменены на ' '
и «»
(фигурные кавычки). Мне приходится долго нажимать клавишу кавычек на виртуальной клавиатуре, чтобы ввести обычные, и у меня нет возможности ввести их на Smart Cover.
Я программист, и мне нужно использовать '
и "
, есть ли способ изменить их обратно?
Я подозреваю, что эта проблема связана с моим языком и настройками региона, я нахожусь в Китае, и мой iPad язык, кстати, английский.
Это в настройках | Общие | Клавиатура | Умная пунктуация.
Перейти к системным предисловиям, клавиатуре. В окне клавиатуры щелкните вкладку текста. В этом окне справа есть возможность использовать умные кавычки. Снимите флажок.
2
Добавление кавычек в Swift
Есть простой способ в Swift для добавления кавычек к строке? Кавычки должны правильно локализоваться (см. Https://en.wikipedia.org/wiki/Quotation_mark) в зависимости от языковых настроек пользователя. Я хотел бы показать строку в UILabel после добавления кавычек.
Например:
var quote: String! Quote = " Быть или не быть ... "//одна или несколько строк кода, которые добавляют локализованные кавычки
Для французского пользователя: « Быть или не быть … »
Для немецкого пользователя: « Быть или не быть … »
Использование информации из http://nshipster.com/nslocale/:
let locale = NSLocale.currentLocale () let qBegin = locale .objectForKey (NSLocaleQuotationBeginDelimiterKey) как? Нить ?? "" "let qEnd = locale.objectForKey (NSLocaleQuotationEndDelimiterKey) as? String ??" "" let quote = qBegin + "Быть или не быть ..." + qEndprint (quote)
Примеры результатов:
Выходные данные локали de «Быть или не быть ...» en «Быть или не быть ...» fr «Быть или не быть быть ... »ja「 Быть или не быть ... 」
Я не знаю, может ли ключ-разделитель начала/конца быть undefined для alocale. В этом случае в приведенном выше коде будет использоваться обычная двойная кавычка "
.
Используя ту же логику, но с современным и простым синтаксисом.
extension String {static var quotes: (String, String) {guard let bQuote = Locale. current.quotationBeginDelimiter, let eQuote = Locale.current.quotationEndDelimiter else {return ("" "," "")} return (bQuote, eQuote)} var quoted: String {let (bQuote, eQuote) = String.quotes return bQuote + self + eQuote}}
Тогда вы можете использовать его просто так:
print ("Быть или нет быть...". quoted)
Результаты
Выходные данные локали de «Быть или не быть ...» en «Быть или не быть ... ”Fr« Быть или не быть ... »ja「 Быть или не быть ... 」
Также я советую вам прочитать все Руководство Apple по интернационализации и локализации
пусть quote = "" Быть или не быть ... "" println (quote)
вывод Будет: «Быть или не быть …»
5