我正在尝试替换在循环中动态生成的字符串中的变量
String url = "";
data.forEach((key, value) {
url = "$url&$value=\${$key}";
});上面的方法返回类似于"https://example.com/test.php?user=${id}&pass=${pass}“的内容
我有两个名为id和pass的变量。但是在我动态生成这个字符串之后,当我打印它时,它不会替换变量。
var id = 1;
var pass = abc;
String url = "";
data.forEach((key, value) {
url = "$url&$value=\${$key}";
});
print(url);发布于 2021-01-20 17:06:04
与explained elsewhere一样,Dart中的字符串插值是编译时语法糖。正如在The Dart Language Tour中简要提到的,字符串插值是在字符串文字上执行的。它不会在一般的String对象上执行。
你将不得不设计另一种方法来做你想做的事情。例如:
String url = "";
data.forEach((key, value) {
if (key == "\${id}") {
key = id;
} else if (key == "\${pass}") {
key = pass;
}
url = "$url&$value=$key";
});或者,如果您有更多的变量要处理,可能会更好:
var allowedKeys = {
"\${id}": id,
"\${pass}": pass,
};
String url = "";
data.forEach((key, value) {
key = allowedKeys[key] ?? key;
url = "$url&$value=$key";
});(顺便说一句,您对"key“和"value”的使用似乎很混乱,而且与典型用法相比倒退了。)
https://stackoverflow.com/questions/65787141
复制相似问题