简体   繁体   中英

Replace part of text in a dynamic string

Let's take this string has an example:

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

I want to cut the first part of the path:

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

And replace it with **../** , and keep the second part of the path ( media/reports/Darth_Vader_Report.pdf )

If I knew the length or size of it, I could use the Replace or Substring . But since the first part of the string is dynamic, how can I do this?


Update

After StriplingWarrior question, I realized that I could have explained better.

The objective is to replace everything behind /media . The “media” directory is static, and will always be the decisive part of the path.

You could do something like this:

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);

I haven't checked it, but I think it should do the trick.

Use Regular Expressions:

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);
}

Good luck!

I would write the following regex pattern,

String relativePath = String.Empty;
Match m = Regex.Match("Path", "/media.*$");
if (m.Success)
{
relativePath = string.Format("../{0}", m.Groups[0].Value);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM