void main() {
var list = ['Me', 'You', 'Them'];
print(list); // [Me, You, Them]
var selected = 'You'; // user input A (find)
var newValue = 'Yours'; // user input B (replace)
// find the item you want to replace, in this case, it's the value of `selected`.
var index = list.indexOf(selected);
// if replacing only one item, the end index should always be `startIndex` +1.
// `replaceRange` only accepts iterable(list) so `newValue` is inside the array.
list.replaceRange(index, index + 1, [newValue]);
print(list); // [Me, Yours, Them]
}
void main() {
String inputString = 'myInput'; // User input to replace inside the list
List<String> list = ['1', inputString, '3', '4', '5', inputString, '7']; // List of items
List<String> filteredList = list.where((e) => e == inputString).toList();
for (final e in filteredList) {
final index = list.indexOf(e);
list.removeAt(index);
list.insert(index, 'newInput'); // Replacing inputString by 'newInput'
}
}
基本上我所做的就是创建一个子列表filteredList,其中只包含用户输入的出现。然后我遍历我的filteredList,在从list中删除项之前,我会保留它的索引,以便在正确的位置插入新元素。 Try the code on DartPad
4条答案
按热度按时间sdnqo3pr1#
您也可以使用***replaceRange***执行以下操作:
nfg76nw02#
基本上,在应用程序中遍历列表,检查输入是否等于用户的输入。
或
不过,这只适用于第一次出现的情况。
b4qexyjb3#
我会这样做:
基本上我所做的就是创建一个子列表
filteredList
,其中只包含用户输入的出现。然后我遍历我的filteredList
,在从list
中删除项之前,我会保留它的索引,以便在正确的位置插入新元素。Try the code on DartPad
jum4pzuy4#
替换基元类型的第一个匹配项