我想写一个可以从字符串中提取文件类型的正则表达式。

字符串就像:


  文字档案
  (.prn; .txt; .rtf; .csv; .wq1)| .prn; .txt; .rtf; .csv; .wq1 | PDF
  文件(.pdf)| .pdf | Excel文件
  (.xls; .xlsx; .xlsm; .xlsb; .xlam; .xltx; .xltm; .xlw)


结果例如


  .prn

最佳答案

您有对话框filterformat。

扩展名已经出现两次(首次出现是不可靠的),当您尝试直接使用RegEx处理时,您必须考虑一下

 Text.Files (.prn;.txt;.rtf;.csv;.wq1)|.prn;.txt;.rtf;.csv;.wq1|


等等

遵循已知结构看起来更安全:

string filter = "Text Files (.prn;.txt;.rtf;.csv;.wq1)|.prn;.txt;.rtf;.csv;.wq1|PDF Files (.pdf)|.pdf|Excel Files (.xls;.xlsx;.xlsm;.xlsb;.xlam;.xltx;.xltm;.xlw)";

string[] filterParts = filter.Split("|");

// go through the odd sections
for (int i = 1; i < filterParts.Length; i += 2)
{
    // approx, you may want some validation here first
    string filterPart = filterParts[i];

    string[] fileTypes = filterPart.Split(";");
    // add to collection
}


这(仅)要求过滤器字符串具有正确的语法。

09-25 18:41