You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发中如何转义字符串内的美元符号$字符

Flutter 处理含$字符URL的转义方案

Dart 语法中,普通字符串内的$是字符串插值的专用标识符,直接写在字符串中不会被识别为普通文本,会导致Uri解析结果不符合预期。可通过以下三种方式解决:

  • 逐个转义$字符
    每一个需要保留为普通文本的$前面加反斜杠\做转义即可,示例代码:

    var url = Uri.parse('https://olinda.bcb.gov.br/olinda/servico/Expectativas/versao/v1/odata/ExpectativaMercadoMensais?\$top=100&\$skip=0&\$orderby=Data%20desc&\$format=json&\$select=Indicador,DataReferencia,Mediana,baseCalculo');
    
  • 使用原始字符串(Raw String)
    在字符串的引号前加r前缀,声明为原始字符串后,字符串内所有特殊字符都会被当作普通文本处理,不需要逐个转义$,写起来更简便,示例代码:

    // r前缀标记原始字符串,内部$无需额外转义
    var url = Uri.parse(r'https://olinda.bcb.gov.br/olinda/servico/Expectativas/versao/v1/odata/ExpectativaMercadoMensais?$top=100&$skip=0&$orderby=Data%20desc&$format=json&$select=Indicador,DataReferencia,Mediana,baseCalculo');
    
  • 规范构造Uri(推荐)
    不手动拼接完整URL字符串,直接用Uri类的构造函数传入路径、查询参数,由框架自动处理特殊字符转义和URL编码,容错率最高,示例代码:

    var url = Uri(
      scheme: 'https',
      host: 'olinda.bcb.gov.br',
      path: '/olinda/servico/Expectativas/versao/v1/odata/ExpectativaMercadoMensais',
      queryParameters: {
        '\$top': '100',
        '\$skip': '0',
        '\$orderby': 'Data desc',
        '\$format': 'json',
        '\$select': 'Indicador,DataReferencia,Mediana,baseCalculo'
      }
    );
    

注意:如果URL中除了$之外还有其他需要URL编码的特殊字符(比如示例里的空格),优先选择第三种构造方式,不需要手动写百分号编码,框架会自动完成合规处理。

内容的提问来源于stack exchange,提问作者Rodrigo Mantovani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 21:27:20