swift - 如何从.components(separatedBy:CharacterSet)中获取非转义撇号
问题描述
我如何才能components(separatedBy: CharacterSet)
返回子字符串,以便它们不包含转义的撇号或单引号?
当我打印结果数组时,我希望它不包含反斜杠字符。
我正在使用游乐场来操作文本并在终端中生成输出,我可以在 Xcode 之外复制和使用这些输出,因此我想从终端输出中生成的字符串表示中去除转义字符。
var str = "can't,,, won't, , good-bye, Santa Claus"
var delimiters = CharacterSet.letters.inverted.subtracting(.whitespaces)
delimiters = delimiters.subtracting(CharacterSet(charactersIn: "-"))
delimiters = delimiters.subtracting(CharacterSet(charactersIn: "'"))
var result = str.components(separatedBy: delimiters)
.map({ $0.trimmingCharacters(in: .whitespaces) })
.filter({ !$0.isEmpty })
print(result) // ["can\'t", "won\'t", "good-bye", "Santa Claus"]
解决方案
你所要求的是形而上学的不可能。你不能想要任何关于如何print
打印的信息。它只是日志中的一个表示。
您的字符串实际上不包含任何反斜杠,那么问题是什么?print
命令输出如何标记它们是无关紧要的。您不妨“想要”该print
命令将您的字符串翻译成法语。不,这不是它的作用。它只是打印,它打印的方式就是它打印的方式。
另一种看待它的方式:数组两端不包含方括号。并且字符串两端不包含双引号。这些是你可能写的东西,以便将这些东西表达为文字,但它们作为实际对象的一部分并不是真实的。好吧,我不认为你反对那些!
基本上,如果你想控制某些东西的输出,你可以编写一个输出例程。如果您要依赖print
,请接受它写东西的有趣的旧方式并继续前进。
推荐阅读
- javascript - 在reduce和map中删除一个属性(数组)?
- ansible - 需要通过引用 Gitlab 环境变量为使用 Ansible playbook 的用户设置 SSH 密钥
- android - 使用内联/跨内联函数时,Android Studio 调试器不起作用
- soap - 如何将带有 SOAP 正文的 CFHTTP 请求转换为 CFINVOKE 请求
- python - 将大型列表存储在 Dynamo DB 表中以优化解码时间的最佳方式
- python - 将“列表列表”Wiki 页面组织成表格
- arduino - 如何计算三轴加速度计的旋转角度?
- mysql - 如何获取技能='Python'和技能='Javascript'的uid记录
- java - 对象列表中的列总和
- python - 禁用 Django 自动分配未保存对象的反向关系