什么是最简洁的方法从Swift中的字符串中删除第一个字符?

前端之家收集整理的这篇文章主要介绍了什么是最简洁的方法从Swift中的字符串中删除第一个字符?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我要删除字符串中的第一个字符。到目前为止,我提出的最简洁的事情是:
display.text = display.text!.substringFromIndex(advance(display.text!.startIndex,1))

我知道我们不能索引到一个Int,因为Unicode的字符串,但这个解决方案似乎非常冗长。有没有另一种方式,我忽略?

如果你使用Swift 3,你可以忽略这个答案的第二部分。好消息是,这现在实际上简洁了!只需使用String的新的remove(at :)方法
var myString = "Hello,World"
myString.remove(at: myString.startIndex)

myString // "ello,World"

我喜欢这个全局dropFirst()函数

let original = "Hello" // Hello
let sliced = dropFirst(original) // ello

它很短,清晰,适用于符合Sliceable协议的任何东西。

如果你使用Swift 2,这个答案已经改变。您仍然可以使用dropFirst,但不能从字符串characters属性删除第一个字符,然后将结果转换回字符串。 dropFirst也成为一个方法,而不是一个函数

let original = "Hello" // Hello
let sliced = String(original.characters.dropFirst()) // ello

另一个选择是使用后缀函数来拼接字符串的UTF16View。当然,这也必须转换回一个字符串之后,以及。

let original = "Hello" // Hello
let sliced = String(suffix(original.utf16,original.utf16.count - 1)) // ello

所有这一切都是说,我最初提供的解决方案已经证明不是在Swift的较新版本中这样做的最简洁的方法。我建议回到@chris的解决方案使用removeAtIndex()如果你正在寻找一个简短和直观的解决方案。

var original = "Hello" // Hello
let removedChar = original.removeAtIndex(original.startIndex)

original // ello

正如@vacawama在下面的注释中指出的,不修改原始字符串的另一个选项是使用substringFromIndex。

let original = "Hello" // Hello
let substring = original.substringFromIndex(advance(original.startIndex,1)) // ello

或者,如果你正在寻找一个字符从字符串的开始和结束,你可以使用substringWithRange。只要确保防止startIndex n> endIndex – m。

let original = "Hello" // Hello

let newStartIndex = advance(original.startIndex,1)
let newEndIndex = advance(original.endIndex,-1)

let substring = original.substringWithRange(newStartIndex..<newEndIndex) // ell

最后一行也可以使用下标符号表示。

let substring = original[newStartIndex..<newEndIndex]
原文链接:https://www.f2er.com/swift/321322.html

猜你在找的Swift相关文章