将$替换为\ $以使用Dart(不是原始数据)

时间:2018-12-23 02:19:14

标签: dart flutter

这似乎是一个简单的问题,但我无法弄清楚。

我在JSON对象中有一个字符串,该对象是从另一种语言生成的,该语言包含转义字符和美元符号(应解释为美元符号)。当我在Dart中使用此字符串时,它抱怨$,因为它认为这是一个变量。在字符串前面添加r来将字符串解释为raw是不够的,因为那样一来它就不会解释任何其他转义字符。

例如,给定以下字符串:

line 1 costs $250 and\nline 2 costs $300

我需要将其转换为此,以便可以在Dart中使用它:

line 1 costs \$250 and\nline 2 costs \$300

我也想为我的转换器为此条件创建一个测试。

我没有运气就尝试了以下方法:

String s2 = s1.replaceAll(RegExp(r'\$'),r'\$');

并进行测试:

expect(s1, contains('\$'));
expect(s2, contains('\\\$'));

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

如果字符串来自JSON,则Dart不会插值。

插值仅适用于Dart源代码中的字符串。在您的情况下,无需替换$

答案 1 :(得分:0)

@ViniciusPinto指出,使用jsonDecode()可以避免此问题。