2011-03-23 7 views
0

私は、複数の種類のファイルシーケンスを解決するための確かな方法を見つけようとしています。ファイルシーケンス>名前パターンの検索

これらの配列を考えてみましょう

file_0000.jpg
file_0001.jpg
file_0002.jpgなど
&
new1File001.jpg
new1File002.jpg
new1File003.jpg

したがって、シーケンスコードの最初の小数点がどこから始まるかを調べる必要があります。

明らかに、これは、シーケンス番号が "_"で区切られたファイルシーケンスを検出します。最後の10進シーケンスの最初の10進数の位置でフィルタリングします。私の正規表現のスキルは良くないし、それでもラムバ式でどのように使うのか分からない。

主な質問は、上記のケースでの番号文字列がどこから始まるかを調べるにはどうすればよいですか。

すべてのポインタは素晴らしいでしょう!
おかげで、

+0

私はばかなことかもしれませんが、私は、TIが質問を見つけるように見えることができません。あなたは何をしようとしているのですか?リストを注文する方法をお探しですか? –

+0

私はポストを少し編集しました。うまくいけば、最後のパラグラフではそれがより明確になりました。ありがとう! – JHN

+0

番号シーケンスが始まるファイル名の各シーケンスの位置を見つけたいと思ったら、正しく理解していますか?したがって、file_0000.jpgの場合は4、foo0000.jpgの場合は2になります。 –

答えて

1

-Johan
はい、正規表現が救助にある:

var r = new Regex(@".+(\d{2,})."); 
var grouped = 
    files. 
     OrderBy(f => f.Name). 
     GroupBy(f => r.Match(f.Name).Groups[0].Value); 
+0

これは正しい道だと思うけど、表現がうまくいっていない、正しい値を返していない。 – JHN

+0

'var r = new Regex(@"。+(\ d {3、}) "、RegexOptions.RightToLeft);' 'var grouped =ファイルです。 OrderBy(f => f.Name)。 GroupBy(f => f.Name.Substring(0、Path.GetFileNameWithoutExtension(f.Name).Length - r.Match(Path.GetFileNameWithoutExtension(f.Name))。グループ[1] .Length)); ' 私は今何を持っていますか?それは動作しますが、少し遅く感じます。改善できる点は?ありがとう。 – JHN