簡體   English   中英

如何從C#中的字符串列表創建正則表達式?

[英]how to create regex from list of strings in C#?

我有以下代碼,從字符串列表中創建一個正則表達式,這完全可以滿足我的需要。我想知道是否有一種線性方法可以做到這一點?

using System;

    class Program
    {
        static void Main(string[] args)
        {

            string[] idlist1 = new string[] { };
            string[] idlist2 = new string[] { };
            string[] idlist3 = new string[] { };
            string id1 = "ABC1234.PIL.5.0-00028-P-1";
            string id2 = "DEF5678.PIL.5.0-00028-E-1";
            string id3 = "GHI9101.PIL.4.0-00135-B-1";

            idlist1 = id1.Split('-');
            idlist2 = id2.Split('-');
            idlist3 = id3.Split('-');
            //create a regex of type ABC1234.PIL.5.0*P*
            //create a regex of type DEF5678.PIL.5.0*E*
            //create a regex of type GHI9101.PIL.4.0.B*
            string regex1 = idlist1[0] + "*" + idlist1[2] + "*" ;
            string regex2 = idlist2[0] + "*" + idlist2[2] + "*";
            string regex3 = idlist3[0] + "*" + idlist3[2] + "*";
            Console.WriteLine(regex1);
            Console.WriteLine(regex2);
            Console.WriteLine(regex3);
            Console.ReadLine();

        }
    }

一個班輪? 當您可以將此操作移至方法時,似乎是不必要的優化...

public string GetRegex(string idString)
{
    string[] idlist = new string[] { };
    idlist = idString.Split('-');
    string regex = idlist[0] + "*" + idlist[2] + "*";
    return regex;
}

調整@Callback Kid的答案:

   public string GetRegex(string idString)
   {
      string[] idlist = { };
      idlist = idString.Replace('-', '*').Split('*');
      return string.Concat(idlist[0], idlist[2]);
    }

這是您問題中所有代碼的統一解決方案:)

new string[] {"ABC1234.PIL.5.0-00028-P-1", "DEF5678.PIL.5.0-00028-E-1", "GHI9101.PIL.4.0-00135-B-1"}.Select(x => Regex.Replace(x, "-.+-(.)-.", "*$1*")).ToList().ForEach(x => Console.WriteLine(x));

不過,為了更好地理解它。

new string[]
{
    "ABC1234.PIL.5.0-00028-P-1", "DEF5678.PIL.5.0-00028-E-1", "GHI9101.PIL.4.0-00135-B-1"
}
.Select(x => Regex.Replace(x, "-.+-(.)-.", "*$1*"))
.ToList()
.ForEach(x => Console.WriteLine(x));

僅用於單個條目的實際創建,您可以使用此襯板

Console.WriteLine(Regex.Replace("ABC1234.PIL.5.0-00028-P-1", "-.+-(.)-.", "*$1*"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM