我想写一个可以从字符串中提取文件类型的正则表达式。
字符串就像:
文字档案
(.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
}
这(仅)要求过滤器字符串具有正确的语法。