#swift
Вопрос:
У меня есть строка: $271.65
, как я могу добавить пробел после $
самого простого из возможных способов? Я использую SwiftUI
Я попробовал это свойство .kerning(10)
, но оно добавляет пробел после каждого символа, я хочу только после первого.
Спасибо
Комментарии:
1. Как насчет использования NumberFormatter, если это валюта, с которой вы работаете?
2. Вы должны использовать NumberFormatter для правильной обработки локализации, подобной этой. Никогда не пытайтесь отформатировать его самостоятельно, вы гарантированно сделаете это неправильно.
3. @JoakimDanielson Я работаю с валютой да, я использую функцию, которая преобразует двойной в строку:
numberFormatter.numberStyle = NumberFormatter.Style.currency
4. @Alexander можете ли вы опубликовать в разделе ответов, как с этим справиться?
5. @Arturo Если вы уже используете
NumberFormatter
, настройки по умолчанию должны генерировать строки валют, правильно отформатированные для языкового стандарта пользователя. В некотором смысле правильный ответ на вопрос «как добавить пробел после$
» заключается в том, что вы этого не делаете, потому что это был бы неправильный формат. Форматировщик чисел с правильным набором локали должен добавить для вас место в местах, где это обычно.
Ответ №1:
Нет необходимости вручную добавлять пробел в последнюю строку. Если вам нужен пробел между знаком доллара и значением валюты, вы можете просто использовать фиксированный язык «en_US_POSIX». Это гарантирует, что формат валюты никогда не будет зависеть от локали и настроек устройства.
let numberFormatter = NumberFormatter()
numberFormatter.locale = .init(identifier: "en_US_POSIX")
numberFormatter.numberStyle = .currency
numberFormatter.string(for: 271.65) // "$ 271.65"
Ответ №2:
var greeting = "Hello, playground"
greeting.insert(" ", at: greeting.index(after: greeting.startIndex))
print(greeting) // H ello, playground
greeting.insert(" ", at: greeting.index(greeting.startIndex, offsetBy: 1))
print(greeting) // H ello, playground
Комментарии:
1. Это очень хорошо сработало в одной строке, спасибо, Адриан. Примем через 4 минуты