Добавьте пробел в строку после первой буквы — Swift 5

#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 минуты