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

Posted

技术标签:

【中文标题】删除快速字符串的最后一个标点符号【英文标题】:Remove last punctuation of a swift string 【发布时间】:2016-01-01 00:47:28 【问题描述】:

我正在尝试在 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 的最后一个字符是否是标点符号。它可以是句号、逗号、破折号等,如果是我需要删除它。

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

有多种方法可以做到这一点。您可以使用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)
    

【讨论】:

非常感谢,这解决了我的问题! 不客气@VitalikK。请单击我的答案左侧的复选标记将其变为绿色。 知道了,我刚接触堆栈溢出 您是否知道如何初始化此字典:var songs = [String: [song]]() 其中歌曲是一个结构 即初始化。 Song 应该大写为结构名称。使用您的结构和要放入字典的数据发布一个新问题。【参考方案2】:

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

例如,去除字符串两端的空格和标点符号-

let str = "\n 这是一个字符串,但我需要删除这个逗号和空格,\t\n"

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

结果 -

这是一个字符串,但我需要删除这个逗号和空格

【讨论】:

以上是关于删除快速字符串的最后一个标点符号的主要内容,如果未能解决你的问题,请参考以下文章

在linux配置文件里怎么一行一行删除?

MPMoviePlayerViewController,删除快速符号/添加背景图像?

如何在Java中使用正则表达式模式在字符串的最后一个字母之前插入-符号

当字符串的最后一个位置是标点符号时程序停止解析

word怎么删除回车符号 word如何删除回车符号

如何修复此代码,使其随机播放字母并且对第一个字母和最后一个字母、标点符号没有影响