C#-使用正则表达式对列表框中的数据进行排序

C#-使用正则表达式对列表框中的数据进行排序,c#,regex,parsing,listbox,text-files,C#,Regex,Parsing,Listbox,Text Files,我有一个包含数据的文件,我想把它分成三个不同的列表框。我希望第一个列表框包含所有数据(从文本文档读取的每行数据都有一个新的列表项) 主列表框: D1 D2 C9 R7 R1 C130 D99 Q9 第二个列表框:(使用正则表达式匹配以D开头的值之后) 第三个列表框:(使用正则表达式匹配以C开头的值之后) 在这些值与第二个和第三个列表框相匹配后 新的主列表框将如下所示: R7 R1 Q9 代码 静态列表findPackagePlacementOneType(列表列表) { //创建要以新

我有一个包含数据的文件,我想把它分成三个不同的列表框。我希望第一个列表框包含所有数据(从文本文档读取的每行数据都有一个新的列表项)

主列表框:

D1
D2
C9
R7
R1
C130
D99
Q9
第二个列表框:(使用正则表达式匹配以D开头的值之后)

第三个列表框:(使用正则表达式匹配以C开头的值之后)

在这些值与第二个第三个列表框相匹配后

新的主列表框将如下所示:

R7
R1
Q9  

代码

静态列表findPackagePlacementOneType(列表列表)
{
//创建要以新格式返回的新列表。
var result=新列表();
//检查列表中的每一行。
foreach(列表中的var行)
{
//位置1正则表达式
Match regexRES=Regex.Match(第行@“^.+(RES)”;
Match regex0402=Regex.Match(行@“^.+(0402)”;
Match regex0201=Regex.Match(行@“^.+(0201)”;
Match regex0603=Regex.Match(行@“^.+(0603)”;
Match regex0805=Regex.Match(行@“^.+(0805)”;
Match regex1206=Regex.Match(行@“^.+(1206)”;
Match regex1306=Regex.Match(行@“^.+(1306)”;
Match regex1608=Regex.Match(行@“^.+(1608)”;
Match regex3216=Regex.Match(行@“^.+(3216)”;
Match regex2551=Regex.Match(第行@“^.+(2551)”;
Match regex1913=Regex.Match(行@“^.+(1913)”;
Match regex1313=Regex.Match(行@“^.+(1313)”;
Match regex2513=Regex.Match(第行@“^.+(2513)”;
Match regex5125=Regex.Match(第行@“^.+(5125)”;
Match regex2525=Regex.Match(第行@“^.+(2525)”;
Match regex5619=Regex.Match(行@“^.+(5619)”;
Match regex3813=Regex.Match(第行@“^.+(3813)”;
Match regex1508=Regex.Match(行@“^.+(1508)”;
Match regex6431=Regex.Match(行@“^.+(6431)”;
Match regex2512=Regex.Match(行@“^.+(2512)”;
Match regex1505=Regex.Match(行@“^.+(1505)”;
Match regex2208=Regex.Match(行@“^.+(2208)”;
Match regex1005=Regex.Match(行@“^.+(1005)”;
Match regex1010=Regex.Match(行@“^.+(1010)”;
Match regex2010=Regex.Match(行@“^.+(2010)”;
Match regex0505=Regex.Match(行@“^.+(0505)”;
Match regex0705=Regex.Match(第行@“^.+(0705)”;
Match regex1020=Regex.Match(行@“^.+(1020)”;
Match regex1812=Regex.Match(行@“^.+(1812)”;
Match regex2225=Regex.Match(第行@“^.+(2225)”;
Match regex5764=Regex.Match(行@“^.+(5764)”;
Match regex4532=Regex.Match(行@“^.+(4532)”;
Match regex1210=Regex.Match(行@“^.+(1210)”;
Match regex0816=Regex.Match(行@“^.+(0816)”;
Match regex0363=Regex.Match(行@“^.+(0363)”;
Match regexSOT=Regex.Match(第行@“^.+(SOT)”);
如果(regexRES.Success | | regex0402.Success | | regex0201.Success | | regex0603.Success||
regex0805.Success | | regex1206.Success | | regex1306.Success | | regex1608.Success||
regex3216.Success | | regex2551.Success | | regex1913.Success | | regex1313.Success||
regex2513.Success | | regex5125.Success | | regex2525.Success | | regex5619.Success||
regex3813.Success | | regex1508.Success | | regex6431.Success | | regex2512.Success||
regex1505.Success | | regex2208.Success | | regex1005.Success | | regex1010.Success||
regex2010.Success | | regex0505.Success | | regex0705.Success | | regex1020.Success||
regex1812.Success | | regex2225.Success | | regex5764.Success | | regex4532.Success||
regex1210.Success | | regex0816.Success | | regex0363.Success | | regexSOT.Success)
{
Add(string.Join(“,line));
}
其他的
结果:删除(行);
}
//返回新列表,以便进一步格式化。
返回结果;
}
//查找placement 2包类型。
静态列表findPackagePlacementTwoType(列表列表)
{
//创建要以新格式返回的新列表。
var result=新列表();
//检查列表中的每一行。
foreach(列表中的var行)
{
//第二个正则表达式
Match regexBGA=Regex.Match(第行@“^.+(BGA)”;
Match regexSOP8=Regex.Match(第行@“^.+(SOP8)”;
Match regexQSOP=Regex.Match(第行@“^.+(QSOP)”);
Match regexTQSOP=Regex.Match(第行@“^.+(TQSOP)”;
Match regexSOIC16=Regex.Match(行@“^.+(SOIC16)”;
Match regexSOIC12Plus=Regex.Match(第行@“^.+(SOIC12)”;
Match regexSOIC8=Regex.Match(行@“^.+(SOIC8)”;
Match regexSO8=Regex.Match(行@“^.+(SO8)”;
Match regexSO08=Regex.Match(行@“^.+(SO08)”;
Match regexCQFP=Regex.Match(行@“^.+(CQFP)”);
Match regexLCC=Regex.Match(行@“^.+(LCC)”);
Match regexLGA=Regex.Match(行@“^.+(LGA)”;
Match regexOSCCC=Regex.Match(第行@“^.+(OSCCC)”;
Match regexPLCC=Regex.Match(第行@“^.+(PLCC)”;
Match regexQFN=Regex.Match(行@“^.+(QFN)”);
Match regexQFP=Regex.Match(第行@“^.+(QFP)”);
Match regexSOJ=Regex.Match(行@“^.+(SOJ)”;
Match regexSON=Regex.Match(第行@“^.+(子)”;
if(regexBGA.Success | | regexSOP8.Success | | | regexQSOP.Success | | | regexTQSOP.Success||
正则表达式
C9
C130
R7
R1
Q9  
    static List<string> findPackagePlacementOneType(List<string> list)
    {
        // Creates a new list to return with new format.
        var result = new List<string>();

        // Checks each line in the list.
        foreach (var line in list)
        {
            // PLACEMENT ONE Regex
            Match regexRES = Regex.Match(line, @"^.+(RES)");
            Match regex0402 = Regex.Match(line, @"^.+(0402)");
            Match regex0201 = Regex.Match(line, @"^.+(0201)");
            Match regex0603 = Regex.Match(line, @"^.+(0603)");
            Match regex0805 = Regex.Match(line, @"^.+(0805)");
            Match regex1206 = Regex.Match(line, @"^.+(1206)");
            Match regex1306 = Regex.Match(line, @"^.+(1306)");
            Match regex1608 = Regex.Match(line, @"^.+(1608)");
            Match regex3216 = Regex.Match(line, @"^.+(3216)");
            Match regex2551 = Regex.Match(line, @"^.+(2551)");
            Match regex1913 = Regex.Match(line, @"^.+(1913)");
            Match regex1313 = Regex.Match(line, @"^.+(1313)");
            Match regex2513 = Regex.Match(line, @"^.+(2513)");
            Match regex5125 = Regex.Match(line, @"^.+(5125)");
            Match regex2525 = Regex.Match(line, @"^.+(2525)");
            Match regex5619 = Regex.Match(line, @"^.+(5619)");
            Match regex3813 = Regex.Match(line, @"^.+(3813)");
            Match regex1508 = Regex.Match(line, @"^.+(1508)");
            Match regex6431 = Regex.Match(line, @"^.+(6431)");
            Match regex2512 = Regex.Match(line, @"^.+(2512)");
            Match regex1505 = Regex.Match(line, @"^.+(1505)");
            Match regex2208 = Regex.Match(line, @"^.+(2208)");
            Match regex1005 = Regex.Match(line, @"^.+(1005)");
            Match regex1010 = Regex.Match(line, @"^.+(1010)");
            Match regex2010 = Regex.Match(line, @"^.+(2010)");
            Match regex0505 = Regex.Match(line, @"^.+(0505)");
            Match regex0705 = Regex.Match(line, @"^.+(0705)");
            Match regex1020 = Regex.Match(line, @"^.+(1020)");
            Match regex1812 = Regex.Match(line, @"^.+(1812)");
            Match regex2225 = Regex.Match(line, @"^.+(2225)");
            Match regex5764 = Regex.Match(line, @"^.+(5764)");
            Match regex4532 = Regex.Match(line, @"^.+(4532)");
            Match regex1210 = Regex.Match(line, @"^.+(1210)");
            Match regex0816 = Regex.Match(line, @"^.+(0816)");
            Match regex0363 = Regex.Match(line, @"^.+(0363)");
            Match regexSOT = Regex.Match(line, @"^.+(SOT)");

            if (regexRES.Success || regex0402.Success || regex0201.Success || regex0603.Success ||
                regex0805.Success || regex1206.Success || regex1306.Success || regex1608.Success ||
                regex3216.Success || regex2551.Success || regex1913.Success || regex1313.Success ||
                regex2513.Success || regex5125.Success || regex2525.Success || regex5619.Success ||
                regex3813.Success || regex1508.Success || regex6431.Success || regex2512.Success ||
                regex1505.Success || regex2208.Success || regex1005.Success || regex1010.Success ||
                regex2010.Success || regex0505.Success || regex0705.Success || regex1020.Success ||
                regex1812.Success || regex2225.Success || regex5764.Success || regex4532.Success ||
                regex1210.Success || regex0816.Success || regex0363.Success || regexSOT.Success)
            {
                result.Add(string.Join(" ", line));
            }

            else
                result.Remove(line);
        }

        // Returns the new list so it can be formatted further.
        return result;
    }

    // Finds the placement 2 package types.
    static List<string> findPackagePlacementTwoType(List<string> list)
    {
        // Creates a new list to return with new format.
        var result = new List<string>();

        // Checks each line in the list.
        foreach (var line in list)
        {
            // PLACEMENT TWO Regex
            Match regexBGA = Regex.Match(line, @"^.+(BGA)");
            Match regexSOP8 = Regex.Match(line, @"^.+(SOP8)");
            Match regexQSOP = Regex.Match(line, @"^.+(QSOP)");
            Match regexTQSOP = Regex.Match(line, @"^.+(TQSOP)");
            Match regexSOIC16 = Regex.Match(line, @"^.+(SOIC16)");
            Match regexSOIC12Plus = Regex.Match(line, @"^.+(SOIC12)");
            Match regexSOIC8 = Regex.Match(line, @"^.+(SOIC8)");
            Match regexSO8 = Regex.Match(line, @"^.+(SO8)");
            Match regexSO08 = Regex.Match(line, @"^.+(SO08)");
            Match regexCQFP = Regex.Match(line, @"^.+(CQFP)");
            Match regexLCC = Regex.Match(line, @"^.+(LCC)");
            Match regexLGA = Regex.Match(line, @"^.+(LGA)");
            Match regexOSCCC = Regex.Match(line, @"^.+(OSCCC)");
            Match regexPLCC = Regex.Match(line, @"^.+(PLCC)");
            Match regexQFN = Regex.Match(line, @"^.+(QFN)");
            Match regexQFP = Regex.Match(line, @"^.+(QFP)");
            Match regexSOJ = Regex.Match(line, @"^.+(SOJ)");
            Match regexSON = Regex.Match(line, @"^.+(SON)");

            if (regexBGA.Success || regexSOP8.Success || regexQSOP.Success || regexTQSOP.Success ||
               regexSOIC16.Success || regexSOIC12Plus.Success || regexSOIC8.Success || regexSO8.Success ||
               regexSO08.Success || regexCQFP.Success || regexLCC.Success || regexLGA.Success ||
               regexOSCCC.Success || regexPLCC.Success || regexQFN.Success || regexQFP.Success ||
               regexSOJ.Success || regexSON.Success)
            {
                result.Add(string.Join(" ", line));
            }

            else
                result.Remove(line);
        }

        // Returns the new list so it can be formatted further.
        return result;
    }

    static List<string> findPackagePlacementChoiceType(List<string> list)
    {
        // Creates a new list to return with new format.
        var result = new List<string>();

        // Checks each line in the list.
        foreach (var line in list)
        {
            // PLACEMENT CHOICE Regex
            Match regexCAP = Regex.Match(line, @"^.+(CAP)");
            Match regexIND = Regex.Match(line, @"^.+(IND)");
            Match regexMELF = Regex.Match(line, @"^.+(MELF)");
            Match regexDIOM = Regex.Match(line, @"^.+(DIOM)");
            Match regexSOD = Regex.Match(line, @"^.+(SOD)");
            Match regexSTO = Regex.Match(line, @"^.+(STO)");
            Match regexTO = Regex.Match(line, @"^.+(TO)");

            if (regexCAP.Success || regexIND.Success || regexMELF.Success || regexDIOM.Success ||
               regexSOD.Success || regexSTO.Success || regexTO.Success)
            {
                result.Add(string.Join(" ", line));
            }

            else
                result.Remove(line);
        }

        // Returns the new list so it can be formatted further.
        return result;
    }
mainListBox.ItemsSource = items1;
listBox2.ItemsSource = items2;
listBox3.ItemsSource = items3;
foreach (string str in items1.ToArray())
{
    if (isPackagePlacementOneType(str))
    {
        items1.Remove(str);
        items2.Add(str);
    } else if ...
}
static readonly string[] match1 = new [] { "RES", ... };
static readonly string[] match2 = new [] { "BGA", ... };
static readonly string[] match3 = new [] { "CAP", ... };
//(then in the methods)
return match1.Any(x=>Regex.Match(line, @"^.+(" + x + ")").Success);
static IEnumerable<string> findPackagePlacementOneType(IEnumerable<string> list)
{
    return list.Where(line => Regex.IsMatch(line,
        @"^.+(RES|0402|0201|0603|0805|1206|1306|1608|3216|2551|1913|1313|2513" +
        @"|5125|2525|5619|3813|1508|6431|2512|1505|2208|1005|1010|2010|0505" +
        @"|0705|1020|1812|2225|5764|4532|1210|0816|0363|SOT)"
    ));
}