首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串生成后,颤动替换变量

字符串生成后,颤动替换变量
EN

Stack Overflow用户
提问于 2021-01-19 15:35:11
回答 1查看 133关注 0票数 1

我正在尝试替换在循环中动态生成的字符串中的变量

代码语言:javascript
复制
String url = "";

data.forEach((key, value) {
      url = "$url&$value=\${$key}";
});

上面的方法返回类似于"https://example.com/test.php?user=${id}&pass=${pass}“的内容

我有两个名为id和pass的变量。但是在我动态生成这个字符串之后,当我打印它时,它不会替换变量。

代码语言:javascript
复制
var id = 1;
var pass = abc;

String url = "";

data.forEach((key, value) {
      url = "$url&$value=\${$key}";
});

print(url);

它应该返回"https://example.com/test.php?user=1&pass=abc

EN

回答 1

Stack Overflow用户

发布于 2021-01-20 17:06:04

explained elsewhere一样,Dart中的字符串插值是编译时语法糖。正如在The Dart Language Tour中简要提到的,字符串插值是在字符串文字上执行的。它不会在一般的String对象上执行。

你将不得不设计另一种方法来做你想做的事情。例如:

代码语言:javascript
复制
String url = "";

data.forEach((key, value) {
  if (key == "\${id}") {
     key = id;
  } else if (key == "\${pass}") {
     key = pass;
  }
  url = "$url&$value=$key";
});

或者,如果您有更多的变量要处理,可能会更好:

代码语言:javascript
复制
var allowedKeys = {
  "\${id}": id,
  "\${pass}": pass,
};

String url = "";

data.forEach((key, value) {
  key = allowedKeys[key] ?? key;
  url = "$url&$value=$key";
});

(顺便说一句,您对"key“和"value”的使用似乎很混乱,而且与典型用法相比倒退了。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65787141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档