rust - 标准库中是否有完美的函数或一些推荐的方法来扩展 Rust 中的转义序列?
问题描述
我正在编写的应用程序中接受用户输入,并希望扩展用户输入的转义序列。
例如,如果用户输入\\n
,它将被解释为 str \\\\n
。我想以一般方式解释该字符串(换行)和类似的字符串。
我当然可以String::replace()
在最重要的部分上使用,而无需其他部分,但我更喜欢一个通用的解决方案,它也可以处理十六进制转义(\x61
is a
)。
解决方案
转义通常由词法分析器/解析器处理(基本上它们是语言语法的一部分),我不认为有一个标准库函数可以管理它们,因为它将作为一个低得多的级别完成。
此外,转义往往是高度特定于语言的,可能以意想不到的方式出现。Rust 有一个非常小的转义序列列表,与 C 中可用的垃圾相比,这可能是可取的,但我仍然不知道您是否希望允许例如任意 hex 或 unicode 转义序列。
因此,我建议设置您自己明确支持的转义列表,但如果您真的不想这样做,可能有第三方软件包可以帮助您。
推荐阅读
- java - 如何在Java中使用正则表达式获取包含某些变量的某些部分?
- node.js - 后端和远程 AWS 实例之间的通信
- maven - 是否可以在另一个插件的两次执行之间运行一个插件?
- python - 任何想法如何从给定的点云中分割出盒子表面?
- google-cloud-platform - 关于烫发安装问题的 Google OCR
- scala - 我想反序列化 scala 中的 json 对象
- python - 有没有办法从 2D (x,y) 数据集中绘制同心圆颜色图,其中 x 是 python 中的圆的半径
- php - Symfony 5 在某些请求中没有检测到正确的语言环境
- excel-formula - 如何在 Excel 的行项目中添加“上次更新日期”?
- jmeter - Jmeter 读取 CSV 文件返回
写在上面之后