颤振转换双链表中的字符串



我有一个来自REST API的响应,返回这个:

var time = [{"duration":"00m 25s"},{"duration":"12m 08s"},{"duration":"02m 09s"},{"duration":"01m 25s"}, {"duration":"02m 05s"}]

我想把这个列表转换成:

var newTime = [0.25, 12.08, 2.09, 1.25, 2.05]

您可以使用分隔符(如空格)分割字符串并通过map应用转换来进行字符串操作。

void main() {
var time = [
{"duration": "00m 25s"},
{"duration": "12m 08s"},
{"duration": "02m 09s"},
{"duration": "01m 25s"},
{"duration": "02m 05s"}
];
time.map((e) {
final val = e['duration'].split(' '); // split by space
final result = val[0].substring(0, val[0].length - 1) + '.' +
val[1].substring(0, val[1].length - 1); // concat number by removing unit suffix
return double.tryParse(result); // parsing to double.
}).forEach((e) => print(e)); // 0.25, 12.08, 2.09, 1.25, 2.05
}

您可以这样做:

var time = [{"duration":"00m 25s"},{"duration":"12m 08s"},{"duration":"02m 09s"},{"duration":"01m 25s"}, {"duration":"02m 05s"}];

var newList = time.map((time) {
String clippedMinutes; // will get the minutes part
String clippedSeconds; //// will get the seconds part
String fullTime = time['duration']; // full time part from each Map
final splittedTimeList = fullTime.split(' '); // splits the full time
clippedMinutes = splittedTimeList[0];
clippedSeconds = splittedTimeList[1];
return double.parse('${clippedMinutes.substring(0, clippedMinutes.length - 1)}.${clippedSeconds.substring(0, clippedSeconds.length - 1)}');
}).toList();

print(newList); // output: [0.25, 12.08, 2.09, 1.25, 2.05]

如果它对你有帮助,不要忘记投票

我的贡献:

main(List<String> args) {
final times = [{"duration":"00m 25s"},{"duration":"12m 08s"},{"duration":"02m 09s"},{"duration":"01m 25s"}, {"duration":"02m 05s"}];
var regExp = RegExp(r'(dd)m (dd)s');
var newData = times.map((e) => double.parse(e['duration'].replaceAllMapped(regExp, (m) => '${m[1]}.${m[2]}')));
print(newData);
}

结果:

(0.25, 12.08, 2.09, 1.25, 2.05)

最新更新