List 飞镖,颤振:射程指数
我怎样才能得到一个范围的索引,这个范围是由一个值而不是索引得到的? 例如:List 飞镖,颤振:射程指数,list,flutter,dart,range,List,Flutter,Dart,Range,我怎样才能得到一个范围的索引,这个范围是由一个值而不是索引得到的? 例如: ["H", "e", "l", "l", "o"].getRangeIndexes(["e", "l", "l"]); // [1, 3] 试一试 theList.indexOf(subListOfTheList.first) 获取第一个列表中secondlis
["H", "e", "l", "l", "o"].getRangeIndexes(["e", "l", "l"]);
// [1, 3]
试一试
theList.indexOf(subListOfTheList.first)代码>
获取第一个列表中secondlist的第一个元素的索引,第二个列表中的最后一个元素也是如此
theList.indexOf(subListOfTheList.last)代码>
或
让它成为一种方法
///gives you List of indexes of all the items in smalllist as they appear in biglist,respects the order
List<int> giveBackTheIndexes<T>(List<T> main, List<T> sub) {
var biglist = main;
var smalllist = sub;
final indexes = <int>[];
smalllist.forEach((smalllistElement) {
var i = biglist.indexOf(smalllistElement);
indexes.add(i);
if(i!=-1){
biglist[i]=null;
}
});
return indexes;
}
///提供smalllist中所有项在biglist中显示时的索引列表,并遵循顺序
列表返回索引(列表主、列表子){
var biglist=main;
var smalllist=sub;
最终指数=[];
smalllist.forEach((smalllistElement){
var i=biglist.indexOf(smalllistElement);
增加(i);
如果(i!=-1){
biglist[i]=null;
}
});
收益指标;
}
如果值为-1,则biglist中不存在项您可以编写类似于getRangeIndexes
的函数,如下所示
void main() {
List<String> fullStringList = ["H", "e", "l", "l", "o"];
List<String> subStringList = ["e", "l", "l"];
print(getRangeIndexes(fullStringList, subStringList)); //<-- prints [1, 3]
}
List<int> getRangeIndexes(List<String> fullList, List<String> subList){
List<int> rangeIndexes;
String fullString = fullList.join("");
String subString = subList.join("");
if(!fullString.contains(subString)){
rangeIndexes = [-1, -1]; //return [-1, -1] when it does not contain the same sequence
}
else{
int startIndex = fullString.indexOf(subString);
int endIndex = startIndex + (subString.length - 1);
rangeIndexes = [startIndex, endIndex];
}
return rangeIndexes;
}
void main(){
List fullStringList=[“H”、“e”、“l”、“l”、“o”];
列表子字符串列表=[“e”、“l”、“l”];
打印(getRangeIndexes(fullStringList,subStringList));//非常感谢!是的,它对我很有效,但在某些情况下可能不起作用,比如什么?上面的方法可以缓解你的问题。我认为OP在问题中所给出的例子就是错误的。在所有这些方法中,它总是将2
作为l
的索引,因为indexOf
返回第一次出现的索引。而它应该是3
。因为我们需要第二次l
的索引,即3
,而不是2
。对于相同的示例,此修改的方法返回{e:-1,l:-1}
。这不对吗?