質問

C#コードを介してFTPサーバーに接続しようとしており、ファイルとディレクトリのリストを取得しています。そして、私は(すべての属性を使用して)ArrayListで保存していること。 SYS FTPコマンドを介してFTPサーバータイプを見つけることができます。 UNIXベースのファイルがファイルディレクトリ属性を解析するための正規表現があります。しかし、Windows FTPサーバーファイルの解析については式がありません。私はそれを作るのに助けが必要です。

04-30-09  10:40AM       <DIR>          Acrobat
12-08-09  10:36PM                 9058 AuthCheck.zip
12-06-09  12:49PM                  174 desktop.ini
11-09-09  03:33PM       <DIR>          FailedPDF

これらを解析する必要があります。日付、時刻、dir ファイル、ファイルの名前

助けてください。ありがとう。

役に立ちましたか?

解決

C#についてはあまり知りませんが、正規表現が必要な場合は、これを試してみてください。

^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+([\w<>]*)\s+(\d*)\s+([\w\._\-]+)\s*$

$ 1 =日付、$ 2 =時間、$ 3 = amまたはpm、$ 4 =タイプ(null)、$ 5 = size(null if dir)、$ 6 = name

またはiff $ 4はのみまたは空です

^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+(<DIR>)?\s+(\d*)\s+([\w\._\-]+)\s*$

「<」と「>」はC#の特別な文用ではないと思います

他のヒント

^(\d{2}-\d{2}-\d{2}\s*\d{2}:\d{2}(A|P)M)\s*(<DIR>){0,1}\s*(\d*)\s*(\w)\s*$

キャプチャグループ:0:DateTime 1:is dir 2:filesize(またはディレクトリのnull)3:名前

コンパイラが便利ではないので、テストすることはできませんが、開始するのに十分近いはずです。

線に固定構造があるようです。だからあなたは単にこれを行うことができます:

Date fileDate;
bool isDir;
int fileSize;
string fileName;

fileDate=line.Substring(0,18).ParseExact("MM-dd-yy  hh-sstt");
isDir=line.Substring(24,5)=="DIR";
if (!isDir)
{
    fileSize=int.Parse(line.Substring(29,10).Trim());
}
fileName=line.Substring(39);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top