В Swift преобразование строки в десятичное значение — обычная задача, требуемая в различных сценариях. Независимо от того, работаете ли вы с пользовательским вводом, анализируете данные из внешних источников или выполняете вычисления, важно понимать различные методы преобразования строк в десятичные значения. В этой статье блога мы рассмотрим несколько методов с примерами кода, которые помогут вам добиться точного преобразования строк в десятичные числа в Swift.
Метод 1: использование десятичного инициализатора
let stringNumber = "3.14"
if let decimalValue = Decimal(string: stringNumber) {
print(decimalValue) // Output: 3.14
} else {
print("Invalid decimal format")
}
Метод 2. Использование класса NumberFormatter
let stringNumber = "5.678"
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
if let decimalValue = formatter.number(from: stringNumber) as? NSDecimalNumber {
print(decimalValue) // Output: 5.678
} else {
print("Invalid decimal format")
}
Метод 3. Использование инициализатора типа Decimal с языковым стандартом
let stringNumber = "9,876.54"
let formatter = NumberFormatter()
formatter.locale = Locale(identifier: "en_US")
if let decimalValue = formatter.number(from: stringNumber) as? NSDecimalNumber {
print(decimalValue) // Output: 9876.54
} else {
print("Invalid decimal format")
}
Метод 4. Использование специального подхода к манипуляции со строками
let stringNumber = "12345.6789"
if let decimalValue = Decimal(stringNumber.replacingOccurrences(of: ",", with: "")) {
print(decimalValue) // Output: 12345.6789
} else {
print("Invalid decimal format")
}
Метод 5. Использование регулярных выражений
import Foundation
let stringNumber = "0.12345"
let pattern = #"^(\d*\.?\d*)$|(\d*\.?\d+(e|E)(\+|-)?\d*)$"#
let regex = try NSRegularExpression(pattern: pattern)
let range = NSRange(location: 0, length: stringNumber.utf16.count)
if let match = regex.firstMatch(in: stringNumber, options: [], range: range) {
if let decimalValue = Decimal(string: (stringNumber as NSString).substring(with: match.range)) {
print(decimalValue) // Output: 0.12345
} else {
print("Invalid decimal format")
}
} else {
print("Invalid decimal format")
}
В этой статье мы рассмотрели пять различных методов преобразования строк в десятичные значения в Swift. Каждый метод имеет свои преимущества и может использоваться в зависимости от ваших конкретных требований. Независимо от того, предпочитаете ли вы использовать инициализатор Decimal, класс NumberFormatter, собственный подход к работе со строками или регулярные выражения, Swift предоставляет гибкие возможности для точного преобразования строк в десятичные числа. Поэкспериментируйте с этими методами, чтобы найти тот, который лучше всего соответствует вашим потребностям.