Заменить часть текста в динамической строке - PullRequest
2 голосов
/ 27 октября 2010

Давайте возьмем для этой строки пример:

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

Я хочу вырезать первую часть пути:

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

И заменить его на **../** и сохранить вторую часть пути (media/reports/Darth_Vader_Report.pdf)

Если бы я знал его длину или размер, я мог бы использовать Replace или Substring,Но поскольку первая часть строки является динамической, как я могу это сделать?


Обновление

После вопроса StriplingWarrior я понял, что мог бы объяснить лучше.1023 * Цель состоит в том, чтобы заменить все, что стоит за /media.Каталог «media» является статическим и всегда будет решающей частью пути.

Ответы [ 3 ]

3 голосов
/ 27 октября 2010

Используйте регулярные выражения:

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

Удачи!

3 голосов
/ 27 октября 2010

Вы можете сделать что-то вроде этого:

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

Я не проверял это, но я думаю, что это должно сработать.

0 голосов
/ 27 октября 2010

Я бы написал следующий шаблон регулярных выражений,

String relativePath = String.Empty;
Match m = Regex.Match("Path", "/media.*$");
if (m.Success)
{
relativePath = string.Format("../{0}", m.Groups[0].Value);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...