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

时间:2015-08-12 23:47:52

标签: ios swift

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

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

但它给了我以下错误:

  

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

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

8 个答案:

答案 0 :(得分:17)

Swift 3

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

Swift 4或更高版本

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

答案 1 :(得分:12)

你可以试试这个:

var s = "123456"

let s2 = s.replacingCharacters(in: ...s.startIndex, with: "a")

s2 // "a23456"

答案 2 :(得分:4)

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

答案 3 :(得分:1)

在Swift 4.0中

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

<强>答案

outputString = "Hello"

答案 4 :(得分:0)

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

INSERT INTO

答案 5 :(得分:0)

在Swift 2.0中,您可以执行以下操作: -

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

//Answer
outputString = "Hello"

答案 6 :(得分: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: "**********")

答案 7 :(得分:0)

另一个答案

使用后缀

var s = "1234567"
var transform = "?" + s.suffix(max(s.count - 1, 0))
transform // "?234567"