Swift добавить десятичную точку, где мне нужно String, и отображать только два десятичных - PullRequest
0 голосов
/ 04 июня 2019

У меня есть такая строка

let string = "111112345678"

И мне нужно добавить десятичную точку после четвертого символа, как это

let string = "1111.12345678"

Тогда результат показывается только следующим образом

let string = "1.12"

Я искал несколько таких вопросов, но большинство говорят о двойном округлении.

Как мне взять мою строку, чтобы поместить точку, где я хочу, а затем показать два десятичных формата?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

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

var string = "111112345678"

let index = string.index(string.startIndex, offsetBy: 4)
string.insert(".", at: index)
if let number = Double(string) {
    print(number)
    print(String(format: "%0.2f", number))
}

Обновление: Это действительно странная задача, но я изо всех сил пытаюсь угадать, что тебе нужно.

var string = "111112345678"

let index = string.index(string.startIndex, offsetBy: 4)
string.insert(".", at: index)

let start = string.index(string.startIndex, offsetBy: 3)
let subStr = string[start...]

if let number = Double(subStr) {
    print(number)
    print(String(format: "%0.2f", number))
}
0 голосов
/ 04 июня 2019

Вы можете сделать это следующим образом:

let string = "111112345678"

let start = string.index(string.startIndex, offsetBy: 3)
let end   = string.index(start, offsetBy: 3)
let subStr = string[start..<end]
var newStr = String(subStr)
let decimalIndex = newStr.index(newStr.startIndex, offsetBy: 1)
newStr.insert(".", at: decimalIndex)

print(newStr)  //1.12

Альтернативный способ:

var newStr = String(string.dropFirst(3).prefix(3))
let decimalIndex = newStr.index(newStr.startIndex, offsetBy: 1)
newStr.insert(".", at: decimalIndex)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...