首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何基于搜索筛选器获取不同的字符串值

如何基于搜索筛选器获取不同的字符串值
EN

Stack Overflow用户
提问于 2022-11-23 11:10:16
回答 1查看 36关注 0票数 0

我有字符串值和字符串筛选器的列表(可能包含一个或两个单词)。我想从这个字符串列表中检索所有不同的值,直到只有过滤器中的单词。

我有以下清单:

代码语言:javascript
复制
DEPRI-LOOP 15502 Bulk
DELETE-LOOP 15500 PAIL
DELETE-LOOP 15667 PAIL
OBSOLATE-LOOP 15834 PAIL
DO NOT USE - LOOP 15835 Conc Bulk
LOOP 15000 Bulk
LOOP 15000 Drum, Stg
LOOP 15002 Bulk
LOOP 15002 Drum, Stg
LOOP 15002 LA
LOOP 15250B Bulk
LOOP 15250C Conc Mat
LOOP 15250D Bulk
LOOP 15250D Drum, Stg
LOOP 15400 Bulk
LOOP 15400 Bulk Mat
LOOP 15400 Drum, Stg
LOOP 15500 Bulk
LOOP 15500 Conc Mat
LOOP 15500 Conc Filt Bulk
LOOP 15500 Bulk Mat
LOOP 15500 Drum, Stg
LOOP 15500 IBC BR
LOOP 15500 LA
LOOP 15667 Bulk
LOOP 15667 Conc Mat
LOOP 15667 Conc Filt Bulk
LOOP 15667 Drum, Stg
LOOP 15668 Bulk
LOOP 15668 Conc Bulk
LOOP 15668 Drum, Stg
LOOP 15668D Bulk
LOOP 15668D Drum, Stg
LOOP 15833 Bulk
LOOP 15833 Drum, Stg
LOOP 15834 Bulk
LOOP 15835 Bulk

字符串过滤器值为“循环15",那么我的结果集将包含以下列表:

代码语言:javascript
复制
LOOP 15502
LOOP 15500
LOOP 15667
LOOP 15834
LOOP 15835
LOOP 15000
LOOP 15002
LOOP 15250B
LOOP 15250C
LOOP 15250D
etc. 

既然,过滤器字符串包含两个单词,我只需要采取两个不同的词。我在这个问题上苦苦挣扎,找不到合适的解决办法。

EN

回答 1

Stack Overflow用户

发布于 2022-11-23 20:10:35

您可以使用正则表达式来匹配筛选器,并根据单词边界返回单词。只需一点LINQ就可以得到不同的值:

代码语言:javascript
复制
class Program
{

    public static void Main(string[] args)
    {
        List<String> data = BuildList();
        String filter = "LOOP 15";
        String regexPattern = @"\b\w*" + filter + @"\w*\b";
        var results = data.Where(line => Regex.IsMatch(line, regexPattern)).Select(line => Regex.Match(line, regexPattern).Value).Distinct();
        foreach (String match in results)
        {
            Console.WriteLine(match);
        }

        Console.WriteLine("Press Enter to Quit.");
        Console.ReadLine();
    }

    private static List<String> BuildList()
    {
        List<String> values = new List<String>();
        values.Add("DEPRI-LOOP 15502 Bulk");
        values.Add("DELETE-LOOP 15500 PAIL");
        values.Add("DELETE-LOOP 15667 PAIL");
        values.Add("OBSOLATE-LOOP 15834 PAIL");
        values.Add("DO NOT USE - LOOP 15835 Conc Bulk");
        values.Add("LOOP 15000 Bulk");
        values.Add("LOOP 15000 Drum, Stg");
        values.Add("LOOP 15002 Bulk");
        values.Add("LOOP 15002 Drum, Stg");
        values.Add("LOOP 15002 LA");
        values.Add("LOOP 15250B Bulk");
        values.Add("LOOP 15250C Conc Mat");
        values.Add("LOOP 15250D Bulk");
        values.Add("LOOP 15250D Drum, Stg");
        values.Add("LOOP 15400 Bulk");
        values.Add("LOOP 15400 Bulk Mat");
        values.Add("LOOP 15400 Drum, Stg");
        values.Add("LOOP 15500 Bulk");
        values.Add("LOOP 15500 Conc Mat");
        values.Add("LOOP 15500 Conc Filt Bulk");
        values.Add("LOOP 15500 Bulk Mat");
        values.Add("LOOP 15500 Drum, Stg");
        values.Add("LOOP 15500 IBC BR");
        values.Add("LOOP 15500 LA");
        values.Add("LOOP 15667 Bulk");
        values.Add("LOOP 15667 Conc Mat");
        values.Add("LOOP 15667 Conc Filt Bulk");
        values.Add("LOOP 15667 Drum, Stg");
        values.Add("LOOP 15668 Bulk");
        values.Add("LOOP 15668 Conc Bulk");
        values.Add("LOOP 15668 Drum, Stg");
        values.Add("LOOP 15668D Bulk");
        values.Add("LOOP 15668D Drum, Stg");
        values.Add("LOOP 15833 Bulk");
        values.Add("LOOP 15833 Drum, Stg");
        values.Add("LOOP 15834 Bulk");
        values.Add("LOOP 15835 Bulk");
        return values;
    }

}

输出:

代码语言:javascript
复制
LOOP 15502
LOOP 15500
LOOP 15667
LOOP 15834
LOOP 15835
LOOP 15000
LOOP 15002
LOOP 15250B
LOOP 15250C
LOOP 15250D
LOOP 15400
LOOP 15668
LOOP 15668D
LOOP 15833
Press Enter to Quit.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74545861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档