文字列からファイルタイプを抽出できる正規表現を書いてみたいと思います。Cで正規表現を使用してファイル拡張子を抽出する
文字列は次のようである:
テキストファイル (.PRN;の.txt; の.rtf;の.csv; .WQ1)| .prn; .txt; .rtf; .csv; .wq1 | PDF ファイル(.pdf)| .PDF | Excelファイル (.XLS;の.xlsx、.xlsm ; .xlsb; .xlam; .xltx、.xltm ; .xlw)例えば
結果
.PRN
文字列からファイルタイプを抽出できる正規表現を書いてみたいと思います。Cで正規表現を使用してファイル拡張子を抽出する
文字列は次のようである:
テキストファイル (.PRN;の.txt; の.rtf;の.csv; .WQ1)| .prn; .txt; .rtf; .csv; .wq1 | PDF ファイル(.pdf)| .PDF | Excelファイル (.XLS;の.xlsx、.xlsm ; .xlsb; .xlam; .xltx、.xltm ; .xlw)例えば
結果
.PRN
ダイアログfilterformatを持っています。それがより安全になります
など
の拡張機能は、すでに2回表示(初登場の信頼性が低い)とあなたが正規表現でこれを処理しようとすると、直接あなたを約
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
}
これは、フィルタ文字列の構文が正しいことを前提としています。
ありがとう、私は正規表現の代わりに分割を使用しました。 – Reza
Regex extensionRegex = new Regex(@"\.\w+");
foreach(Match m in extensionRegex.Matches(text))
{
Console.WriteLine(m.Value);
}
あなたが持っている文字列の形式がかなり固定され、その後、次のように動作する必要がある場合:
\.[^.;)]+
なぜ組み込みクラスを使用しないのですか? –
あなたの質問は何ですか? –
@Matt Ellen、おそらく要件を満たしていないからです... OPはファイル名から拡張子を抽出しようとしていません –