我有一个字符串
let stringPlusString = TextBoxCal.text
我想获得 stringPlusString
的最后一个字符,但不想使用数组。Java 有 charAt
,但我在 Swift 中找不到类似的东西。使用last
获取最后一个 Character
对于 Swift 4:
let str = "hello world"
let lastChar = str.last! // lastChar is ""
对于 Swift 2 和 Swift 3:
let str = "hello world"
let lastChar = str.characters.last! // lastChar is ""
对于 Swift 1.2:
let str = "hello world"
let lastChar = last(str)! // lastChar is ""
通过下标访问String
以获取最后一个Character
以下内容适用于 Swift 3 和 Swift 4:
let str = "hello world"
let lastChar = str[str.index(before: str.endIndex)] // lastChar is ""
对于 Swift 1.2 和 Swift 2:
let str = "hello world"
let lastChar = str[str.endIndex.predecessor()] // lastChar is ""
Swift 4:
首先是一些字符 最后是一些字符
let strOSName = "mac operating system"
print(strOSName.prefix(3)) //first char. o/p: MAC
print(strOSName.suffix(6)) //last char. o/p: system
不使用Swift中的数组
您来了:
var text = "Lorem ipsum"
var lastChar = text.substringFromIndex(text.endIndex.predecessor())
let text = "Muhammad Raza"
println("\(text[advance(text.endIndex, -1)])")
extension String {
func onlyLastCharacters(_ count: Int) -> String { return String(suffix(count)) }
func onlyLastCharacters(_ count: Int, checkLength: Bool) -> String? {
if checkLength {
if self.count >= count { return onlyLastCharacters(count) }
return nil
}
return String(suffix(count))
}
}
str.onlyLastCharacters(6)
str.onlyLastCharacters(13, checkLength: true)
不要忘记在这里粘贴解决方案代码
var testNumber = 0
func show(original: String, modified: String?) {
testNumber += 1
if let string = modified {
print("\(testNumber). Original: \"\(original)\", modified: \"\(string)\"")
} else {
print("\(testNumber). nil | count: nil")
}
}
var str = "Hello world!"
show(original: str, modified: str.onlyLastCharacters(6))
show(original: str, modified: str.onlyLastCharacters(12))
show(original: str, modified: str.onlyLastCharacters(13, checkLength: false))
show(original: str, modified: str.onlyLastCharacters(13, checkLength: true))
str = ""
show(original: str, modified: str.onlyLastCharacters(10))
show(original: str, modified: str.onlyLastCharacters(10, checkLength: true))
show(original: str, modified: str.onlyLastCharacters(10, checkLength: false))
1. Original: "Hello world!", modified: "world!"
2. Original: "Hello world!", modified: "Hello world!"
3. Original: "Hello world!", modified: "Hello world!"
4. nil | count: nil
5. Original: "", modified: ""
6. nil | count: nil
7. Original: "", modified: ""
以下是另一种更短的方法,可以获取字符串的最后一个字母:
let text = "some string"
last(text) // returns {Some "a"}
方法 last() 返回一个可选的字符。
advance(text.endIndex, -1)
是否真的更有效率。由于对扩展字形簇(例如“flags”)的新支持,可能仍需要从字符串开头迭代以正确确定最后一个字符。 - Martin R