首页 文章

Swift替换字符串中的第一个字符

提问于
浏览
5

一个非常简单的问题,如何替换字符串的第一个字符 . 我可能做错了什么,但我根本无法让它发挥作用 .

我试过这个: var query = url.query!.stringByReplacingOccurrencesOfString("&", withString: "?", options: NSStringCompareOptions.LiteralSearch, range: NSMakeRange(0, 1))

但它给了我以下错误:

无法使用类型为'(String,withString:String,options:NSStringCompareOptions,range:NSRange)的参数列表调用'stringByReplacingOccurrencesOfString'

当我删除NSMakeRange并将其更改为nil时,它可以工作,但它会替换字符串中的所有& .

7 回答

  • 12

    你可以试试这个:

    var s = "123456"
    
    let s2 = s.replacingCharacters(in: ...s.startIndex, with: "a")
    
    s2 // "a23456"
    
  • 16

    Swift 3

    let string = "&whatever"
    let output= "?" + String(string.characters.dropFirst())
    

    Swift 4 or later

    let string = "&whatever"
    let output = "?" + string.dropFirst()
    
  • 0
    let range = Range(start: query.startIndex, end: query.startIndex.successor())
    query.replaceRange(range, with: "?")
    

    或更短

    let s = query.startIndex
    query.replaceRange(s...s, with: "?")
    

    这与Objective-C有点不同 - 但我们会习惯它;-) .

    如果您对此感到不舒服,可以随时回退到旧的 NSString API:

    let newQuery = (query as NSString).stringByReplacingCharactersInRange(
      NSMakeRange(0,1), withString: "?") // as String not necessary
    
  • 1

    在Swift 4.0中

    let inputString = "!Hello"
    let outputString = String(inputString.dropFirst())
    

    Answer

    outputString = "Hello"
    
  • 4

    问题是您传递的是NSRange值,其中需要Range对象 . 使用Swift字符串时,必须使用

    Range<String.Index>(start: str.startIndex, end: advance(str.startIndex, 1))
    
  • 0

    在Swift 2.0中你可以这样做: -

    let inputString = "!Hello"
    let outputString = String(inputString.characters.dropFirst())
    
    //Answer
    outputString = "Hello"
    
  • 0

    Swift 4.0

    extension String
    {
        func replace_fromStart(str:String , endIndex:Int , With:String) -> String {
            var strReplaced = str ;
            let start = str.startIndex;
            let end = str.index(str.startIndex, offsetBy: endIndex);
            strReplaced = str.replacingCharacters(in: start..<end, with: With) ;
            return strReplaced;
        }
    }
    

    在任何地方使用它

    MY_String.replace_fromStart(str: MY_String, endIndex: 10, With: "**********")
    

相关问题