什么是最简洁的方法从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]

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...