すべてのパスをベースパスでフィルタリングする最も効率的でエレガントな方法は何ですか?基本パスでパスリストをフィルタリングする最も効率的でエレガントな方法は何ですか?
私はパスリストおよびベースパスを持っている、と私はベースパスの子であるパスのリストを取得したい:
public IList<string> FilterPathList(IList<string> paths, string basePath)
{
// return a list of paths that are children of the base path
}
サンプル入力:期待
c:\foo\bar\file1
c:\foo\bar\file2
c:\foo\bar\dir1\file11
c:\foo\bar\dir2\file
c:\foo\other\file1
Base path -> c:\foo\bar
を出力:
c:\foo\bar\file1
c:\foo\bar\file2
c:\foo\bar\dir1\file11
c:\foo\bar\dir2\file
これはケーシングや\ vs /を考慮に入れません!検討してください:http://stackoverflow.com/questions/3660205/is-there-a-method-to-determine-if-a-file-path-is-nested-within-a-directory-path-i –
@Strilanc私はそれがケーシングを考慮に入れないと言ったが、問題は、エレガントな方法をリストを横断することです、どこのコンテンツを拡大することができます。また、質問には、スキャンしている入力のタイプが明示され、スラッシュは使用されません。 –
申し訳ありませんが、私はケーシングノートを見るには速すぎます。ただし、パスには特定のセパレータを使用することが保証されているとは言えません(例では1つしか使用できません)。たとえそれが述べられていたとしても、それは危険な前提です。 –