问题描述可能不太清楚,我来举个例子,就是比如一串数字,12345678,如果前几位符合,123,那么这个就输出AA,符合1234,这个就输出bb,符合12345,就输出cc,怎样能够在符合12345的时候把AAbbcc这三个值都匹配出来,供用户去选择
硬编码得了..
我是想看看有没有更好的方法,他这个可能性比较多,从前1位匹配什么,就有几种输出结果,后面还有前三位匹配什么,前五位匹配什么,输出的都不一样,一共接近一百种可能性
@起风了123:
维护个数组
var listMatched=list.where(t=>numberString.startwith(t.key));
var listResult=listMatched.select(t>t.value);
@猝不及防: 没看太懂
@起风了123:
写错了..改了
你现在有一个维护着123和AA的数组,比如key=123,value=AA,这么一个数据结构的集合
//从这个集合里筛选numberString以key开头的数据
var listMatched=list.where(t=>numberString.startwith(t.key));
//从这个符合要求的集合里取出value,这不就是你要的列表吗
var listResult=listMatched.select(t>t.value);
@猝不及防: 逻辑好像有点不太对,我有两个问题:
1.是key值比较多,有接近一百个,而不是匹配的数据列表数据量大
2.我想要的效果是,不同的key值匹配不同的数据,而会有这种前面三位,前面四位是相同的key值,这时候组成一个数据列表让用户去选择,而不是一个key值会匹配多个数据,不过还是很感谢您的回答
@起风了123:
var listMatched=list.where(t=>numberString.startwith(t.key));
这不是你的一串数字(numberString)去匹配多个key值吗
我好像明白了,我这个是VB的程式,我试着按照您说的方法写一下,非常感谢您的解答
ComparedList a;
MatchMap<,> b;
b.Where(t=>a.Any(g=>g.StartWith(t)))