问题描述
如何使用Swift从String变量中删除最后一个字符?在文档中找不到。
以下是完整示例:
var expression =45 + 22
expression = expression.substringToIndex(countElements(expression) - 1)
新的Swift 3.0方式
API已经获得更多 swifty ,因此Foundation扩展已更改了一些:
var name:String = Dolphin
var truncated = name.substring(to:name.index(before:name.endIndex))
print(name)//Dolphin
print(truncated) Dolphi
或就地版本:
var name:String =Dolphin
name.remove(at:name.index(before:name.endIndex))
print(name) /Dolphi
感谢Zmey,Rob Allen!
Swift 2.0+ Way
有几种方法可以完成此操作:
通过Foundation扩展,尽管不是Swift库的一部分:
var name:String =Dolphin
var truncated = name.substringToIndex(name.endIndex.predecessor())
print(name)//Dolphin
print(truncated) Dolphi
使用 removeRange()
方法( 更改名称
):
var name:String =Dolphin
/ pre>
name.removeAtIndex(name.endIndex.predecessor())
print(name)//Dolphi
使用
dropLast()
函数:var name:String =Dolphin
var truncated = String(name.characters.dropLast())
print(name)//Dolphin
print(truncated)//Dolphi
Old String.Index 6 Beta 4 +)方式
由于
String
Swift中的类型旨在提供出色的UTF-支持,则不能再使用Int
类型访问字符索引/范围/子字符串。而是使用String.Index
:let name:String = Dolphin
let stringLength = count(name)//从swift1.2`countElements`成为`count`
let substringIndex = stringLength - 1
name.substringToIndex ,substringIndex))//Dolphi
此外(更实用,您可以使用
endIndex
:let name:String =Dolphin
name.substringToIndex(name.endIndex.predecessor())//Dolphi
注意:我发现是理解
的理想起点, String.Index
旧版(预测试版4)
你可以简单地使用
substringToIndex()
函数,它的长度小于String
:let name:String =Dolphin
name.substringToIndex(countElements(name) - 1) /Dolphi
How can I remove last character from String variable using Swift? Can't find it in documentation.
Here is full example:
var expression = "45+22" expression = expression.substringToIndex(countElements(expression) - 1)
解决方案New Swift 3.0 Way
The APIs have gotten a bit more swifty, and as a result the Foundation extension has changed a bit:
var name: String = "Dolphin" var truncated = name.substring(to: name.index(before: name.endIndex)) print(name) // "Dolphin" print(truncated) // "Dolphi"
Or the in-place version:
var name: String = "Dolphin" name.remove(at: name.index(before: name.endIndex)) print(name) // "Dolphi"
Thanks Zmey, Rob Allen!
Swift 2.0+ Way
There are a few ways to accomplish this:
Via the Foundation extension, despite not being part of the Swift library:
var name: String = "Dolphin" var truncated = name.substringToIndex(name.endIndex.predecessor()) print(name) // "Dolphin" print(truncated) // "Dolphi"
Using the
removeRange()
method (which alters thename
):var name: String = "Dolphin" name.removeAtIndex(name.endIndex.predecessor()) print(name) // "Dolphi"
Using the
dropLast()
function:var name: String = "Dolphin" var truncated = String(name.characters.dropLast()) print(name) // "Dolphin" print(truncated) // "Dolphi"
Old String.Index (Xcode 6 Beta 4 +) Way
Since
String
types in Swift aim to provide excellent UTF-8 support, you can no longer access character indexes/ranges/substrings usingInt
types. Instead, you useString.Index
:let name: String = "Dolphin" let stringLength = count(name) // Since swift1.2 `countElements` became `count` let substringIndex = stringLength - 1 name.substringToIndex(advance(name.startIndex, substringIndex)) // "Dolphi"
Alternatively (for a more practical, but less educational example) you can use
endIndex
:let name: String = "Dolphin" name.substringToIndex(name.endIndex.predecessor()) // "Dolphi"
Note: I found this to be a great starting point for understanding
String.Index
Old (pre-Beta 4) Way
You can simply use the
substringToIndex()
function, providing it one less than the length of theString
:let name: String = "Dolphin" name.substringToIndex(countElements(name) - 1) // "Dolphi"
这篇关于从字符串中删除最后一个字符。 Swift语言的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!