2

この文字列の例を見てみましょう:

D:/firstdir/Another One/and 2/bla bla bla/media/reports/Darth_Vader_Report.pdf

パスの最初の部分を切り取りたい:

D:/firstdir/Another One/and 2/bla bla bla

に置き換え**../**、パスの 2 番目の部分を保持します ( media/reports/Darth_Vader_Report.pdf)

長さやサイズがわかっていれば、Replaceまたはを使用できますSubstring。しかし、文字列の最初の部分は動的なので、どうすればよいでしょうか?


アップデート

StriplingWarrior の質問の後、私はもっとうまく説明できたはずだと気づきました。

目的は、背後のすべてを置き換えること/mediaです。「メディア」ディレクトリは静的であり、常にパスの決定的な部分になります。

4

3 に答える 3

3

正規表現を使用する:

Regex r = new Regex("(?<part1>/media.*)");
var result = r.Match(@"D:/firstdir/Another One/and 2/bla bla bla/media/reports/Darth_Vader_Report.pdf");
if (result.Success)
{
    string value = "../" + result.Groups["part1"].Value.ToString();
    Console.WriteLine(value);
}

幸運を!

于 2010-10-27T18:54:48.680 に答える
3

次のようなことができます。

string fullPath = "D:/firstdir/Another One/and 2/bla bla bla/media/reports/Darth_Vader_Report.pdf"
int index = fullPath.IndexOf("/media/");
string relativePath = "../" + fullPath.Substring(index);

私はそれをチェックしていませんが、うまくいくはずだと思います。

于 2010-10-27T18:53:43.797 に答える
0

次の正規表現パターンを記述します。

String relativePath = String.Empty;
Match m = Regex.Match("Path", "/media.*$");
if (m.Success)
{
relativePath = string.Format("../{0}", m.Groups[0].Value);
}
于 2010-10-27T19:00:54.020 に答える