首页 > 解决方案 > 标准库中是否有完美的函数或一些推荐的方法来扩展 Rust 中的转义序列?

问题描述

我正在编写的应用程序中接受用户输入,并希望扩展用户输入的转义序列。

例如,如果用户输入\\n,它将被解释为 str \\\\n。我想以一般方式解释该字符串(换行)和类似的字符串。

我当然可以String::replace()在最重要的部分上使用,而无需其他部分,但我更喜欢一个通用的解决方案,它也可以处理十六进制转义(\x61is a)。

标签: rust

解决方案


转义通常由词法分析器/解析器处理(基本上它们是语言语法的一部分),我不认为有一个标准库函数可以管理它们,因为它将作为一个低得多的级别完成。

此外,转义往往是高度特定于语言的,可能以意想不到的方式出现。Rust 有一个非常小的转义序列列表,与 C 中可用的垃圾相比,这可能是可取的,但我仍然不知道您是否希望允许例如任意 hex 或 unicode 转义序列。

因此,我建议设置您自己明确支持的转义列表,但如果您真的不想这样做,可能有第三方软件包可以帮助您


推荐阅读