删除 swift 字符串的最后一个标点符号

Remove last punctuation of a swift string

我正在尝试删除 swift 2.0

中字符串的最后一个标点符号
var str: String = "This is a string, but i need to remove this comma,      \n"
var trimmedstr: String = str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())

首先我要删除末尾的空格和换行符,然后我需要检查 trimmedstr 的最后一个字符是否是标点符号。它可以是句号、逗号、破折号等,如果是我需要将其删除。

我怎样才能做到这一点?

有多种方法可以做到这一点。您可以使用 contains 检查最后一个字符是否在预期字符集中,并在 Stringcharacters 上使用 dropLast() 来构造一个没有最后一个字符:

let str = "This is a string, but i need to remove this comma, \n"

let trimmedstr = str.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet())

if let lastchar = trimmedstr.characters.last {
    if [",", ".", "-", "?"].contains(lastchar) {
        let newstr = String(trimmedstr.characters.dropLast())
        print(newstr)
    }
}

可以使用 .trimmingCharacters(in:.whitespacesAndNewlines).trimmingCharacters(in: .punctuationCharacters)

例如去掉字符串两端的空格和标点-

let str = "\n This is a string, but i need to remove this comma and whitespaces, \t\n"

let trimmedStr = str.trimmingCharacters(in: .whitespacesAndNewlines).trimmingCharacters(in: .punctuationCharacters)

结果 -

This is a string, but i need to remove this comma and whitespaces