从 Swift 字符串中删除前导零的最有效方法

问题描述 投票:0回答:4

我有一个字符串,例如“00123456”,我希望将其放在字符串“123456”中,并删除前导零。

我已经找到了 Objective-C 的几个示例,但不确定使用 Swift 实现这一点的最佳方法。

swift substring leading-zero
4个回答
43
投票

您可以使用正则表达式来做到这一点

let string = "00123456"
let trimmedString = string.replacingOccurrences(of: "^0+", with: "", options: .regularExpression)

好处是无需双重转换,也无需强制展开。

更新:

这也适用于负数

let trimmedString = string.replacingOccurrences(of: #"^([+-])?0+"#, with: "$1", options: .regularExpression)

或使用 Swift Regex(在 Swift 5.7+ 中提供)

let trimmedString = string.replacing(/^([+-])?0+/, with: {$0.output.1 ?? ""})

18
投票

只需将字符串转换为 int,然后再次转换回字符串。它将删除前导零。

let numberString = "00123456"
let numberAsInt = Int(numberString)
let backToString = "\(numberAsInt!)"

结果:“123456”


1
投票

首先,创建 Validator,然后在任何类中使用它。 这是一个例子,它可以工作:) 这是 swift 4.0

class PhoneNumberExcludeZeroValidator {
    func validate(_ value: String) -> String {
        var subscriberNumber = value
        let prefixCase = "0"
        if subscriberNumber.hasPrefix(prefixCase) {
            subscriberNumber.remove(at: subscriberNumber.startIndex)
        }
        return subscriberNumber
    }
}

使用示例:

if let countryCallingCode = countryCallingCodeTextField.text, var subscriberNumber = phoneNumberTextField.text {

     subscriberNumber = PhoneNumberExcludeZeroValidator().validate(subscriberNumber)

          let phoneNumber = "\(countryCallingCode)\(subscriberNumber)"
          registerUserWith(phoneNumber: phoneNumber)
}

-2
投票
let number = "\(String(describing: Int(text)!))"
© www.soinside.com 2019 - 2024. All rights reserved.