一个非常简单的问题,如何替换字符串的第一个字符。我可能做错了,但我根本无法让它发挥作用。
我试过这个:var query = url.query!.stringByReplacingOccurrencesOfString("&", withString: "?", options: NSStringCompareOptions.LiteralSearch, range: NSMakeRange(0, 1))
但它给了我以下错误:
无法使用类型为'(String,withString:String,options:NSStringCompareOptions,range:NSRange)'的参数列表调用'stringByReplacingOccurrencesOfString'
当我删除NSMakeRange并将其更改为nil时,它可以正常工作,但它会替换字符串中的所有&amp ;.
答案 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"