1

最近、正規表現を使用して文字列から URL またはフォルダー パスを取得することについて、同様の質問をしました。Dour High Arch によるこのコメントを見ていました。彼は次のように述べています。

「正規表現をまったく使用しないことをお勧めします。Uri クラスを使用して URL に個別のコード パスを使用し、FileInfo クラスを使用してファイル パスを使用します。これらのクラスは、解析、照合、コンポーネントの抽出などを既に処理しています。」

私はこれを実際に試したことはありませんが、今調べているところですが、彼の言ったことが実際に私が達成しようとしていることに役立つかどうかわかりません.

次のような文字列メッセージを解析できるようにしたい:

「ファイルをhttp://www.thewebsite.com/NewStuffのサーバーに配置しました。ローカル ネットワーク ドライブの J:\Downloads\NewStuff でもアクセスできます」

http://www.thewebsite.com/と の 2 つの文字列を抽出しますJ:\Downloads\NewStuff。Dour High Arch が暗示していたと思うように、文字列からorオブジェクトを解析するUriorFileInfoクラスのメソッドは見当たりません。UriFileInfo

この動作を可能にするUriorクラスの使用について、私が見逃しているものはありますか? FileInfoそうでない場合、これを行うフレームワークに他のクラスがありますか?

4

4 に答える 4

1

最も簡単な方法は、最初に文字列をパーツに分割することだと思います。

最初の区切り文字は各単語のスペースで、2 番目は qoutes (double と single) です。

次に、各トークンで Uri.IsWellFormedUriString を使用します。

次のようなものです:

foreach(var part in String.Split(new char[]{''', '"', ' '}, someRandomText))
{
    if(Uri.IsWellFormedUriString(part, UriKind.RelativeOrAbsolute))
        doSomethingWith(part);

}

URI.IseWellFormedURIStringで見たところ、これはニーズに合わせて少し厳密にする必要があるかもしれません。www.Whatever.com に http:// がない場合は false を返します。

于 2013-10-07T16:44:09.620 に答える
-1

\w+:\S+それがあなたの目的にどれだけ合っているか試してみてください。

于 2013-10-08T17:19:59.227 に答える