如何在Swift 4中删除字符串的最后一个字符?

8

如何在Swift 4中删除字符串的最后一个字符?在较早版本的Swift中,我曾使用substring方法,但该方法已被弃用。

这是我的代码:

temp = temp.substring(to: temp.index(before: temp.endIndex))
3个回答

22

dropLast()是最安全的选择,因为它可以处理空值和空字符串而不会崩溃(由OverD提供答案),但如果您想返回所删除的字符,请使用removeLast()

var str = "String"
let removedCharacter = str.removeLast() //str becomes "Strin"
                                        //and removedCharacter will be "g"

一种不同的函数removeLast(_:)会改变应该被移除的字符计数:

var str = "String"
str.removeLast(3) //Str
两者之间的区别在于removeLast()返回删除的字符,而removeLast(_:)则没有返回值:
var str = "String"
print(str.removeLast()) //prints out "g"

1
这个答案应该发布到重复的问题上,而不是这个问题。 - rmaddy
请注意,如果字符串为空,则程序会崩溃。 - Leo Dabus
1
我建议使用 dropLast,它在应用于空字符串时返回一个空的 Substring,而不是崩溃。 - Alexander

13

您可以使用dropLast()函数。

您可以在Apple文档中找到更多信息。


这是最安全的方法。 - Leo Dabus
没有与 nilempty"" 相关的崩溃问题。工作正常。 - Jack

2
您的代码的字面意义的 Swift 4 转换如下:
temp = String(temp[..<temp.index(before: temp.endIndex)])
  • foo.substring(from: index)变成了foo[index...]

  • foo.substring(to: index)变成了foo[..<index]

    特别的,在某些情况下需要从Substring结果创建一个新的String

但是,the4kmen的答案解决方案更好。


如果字符串为空,这也会导致崩溃。 - Leo Dabus
确实,以及问题中的表达式。 - vadian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接