Ios 替换索引处的字符串值

Ios 替换索引处的字符串值,ios,swift,string,Ios,Swift,String,我试图在从文本输入中获取的字符串的第一个字符中添加一个remove a,并用另一个字符替换它,但新字符串将替换具有0的每个值,而不仅仅是初始数字。下面是我尝试过的代码 let swiftyString = phoneNumberField.text?.replacingOccurrences(of: "0", with: "44") print("STRING \(swiftyString!)") 你可以试试 let res = "44\(swiftyString.dropF

我试图在从文本输入中获取的字符串的第一个字符中添加一个remove a,并用另一个字符替换它,但新字符串将替换具有
0
的每个值,而不仅仅是初始数字。下面是我尝试过的代码

let swiftyString = phoneNumberField.text?.replacingOccurrences(of: "0", with: "44")
        print("STRING \(swiftyString!)")
你可以试试

let res =  "44\(swiftyString.dropFirst())"
或创造

extension String {

    mutating func replaceFirst(_ str:String)  {

        self =  str + self.dropFirst()
    }

}

如果要替换第一个字符:

guard let input = phoneNumberField.text as? String{
       return
}
let outPut = "44" + String(input.dropFirst())
使用
insert(u,at:)
而不是
replacingOccurrences

if var phone = phoneNumberField.text?.dropFirst() {
    phone.insert("44", at: phone.startIndex)
}
替换第N个字符:

extension String {
    func replace(_ with: String, at index: Int) -> String {
        var modifiedString = String()
        for (i, char) in self.enumerated() {
            modifiedString += String((i == index) ? with : String(char))
        }
        return modifiedString
    }
}
let string = "wqrtyry"
let dd = string.replace("R", at: 2)
print(dd)
使用:

extension String {
    func replace(_ with: String, at index: Int) -> String {
        var modifiedString = String()
        for (i, char) in self.enumerated() {
            modifiedString += String((i == index) ? with : String(char))
        }
        return modifiedString
    }
}
let string = "wqrtyry"
let dd = string.replace("R", at: 2)
print(dd)

只需使用
正则表达式
选项,前导插入符号(
^
)只考虑字符串的开头

let swiftyString = phoneNumberField.text?.replacingOccurrences(of: "^0", with: "44", options: .regularExpression)

或在扩展中替换子范围

extension String {
    mutating func replaceLeadingZero(with string: String) {
        if hasPrefix("0") { replaceSubrange(...startIndex, with: string) }
    }
}

let swiftyString = phoneNumberField.text?.replaceLeadingZero(with: "44")

如果你觉得有点冒险,那么你可以使用下面的代码

    var string = "05942208638"
    var ranges: [Range<String.Index>] = []
    var start = string.startIndex
    while start < string.endIndex,
        let range = string.range(of: "0", range: start..<string.endIndex) {
            ranges.append(range)
            start = range.upperBound
            if ranges.count == 1 { break }
    }

    for range in ranges.reversed() {
        string.replaceSubrange(range, with:  "44")
    }
    print(string)  //prints 445942208638
var string=“05942208638”
变量范围:[范围]=[]
var start=string.startIndex
当start