Удалите текст из строки, пока не достигнет определенного символа

У меня проблема, пытающаяся выяснить это. Мне нужно "исправить" некоторые ссылки, вот пример:

  • www.site.com/link/index.php?REMOVETHISHERE
  • www.site.com/index.php?REMOVETHISHERE

Итак, в основном я хочу удалить все, пока оно не достигнет? персонаж. Благодарим за помощь.

Ответ 1

 string s = @"www.site.com/link/index.php?REMOVETHISHERE";
 s = s.Remove( s.LastIndexOf('?') );
 //Now s will be simply "www.site.com/link/index.php"

должен сделать это

Ответ 2

Хотя корректно обработанная операция строки будет работать, более общий способ извлечения частичной информации URI - использовать тип System.Uri, который имеет методы, которые инкапсулируют эти операции, например

var uri = new Uri("http://www.site.com/link/index.php?REMOVETHISHERE");
var part = uri.GetLeftPart(UriPartial.Path);

Это более четко отражает намерение вашего кода, и вы будете повторно использовать текущую реализацию, которая, как известно, работает.

Конструктор System.Uri генерирует исключение, если строка не представляет допустимый URI, но вы, вероятно, захотите вызвать другое поведение в вашей программе, если был встречен недопустимый URI. Чтобы обнаружить недопустимый URI, вы можете либо поймать исключение, либо использовать одну из TryCreate() перегрузок.

Ответ 3

Используйте string.split.

string URL = "www.site.com/link/index.php?REMOVETHISHERE"
var parts = URL.Split('?');

Затем parts[0] будет содержать "www.site.com/link/index.php", а parts[1] будет содержать "REMOVETHISHERE". Затем вы можете использовать любую часть, которую вы хотите.

Вы должны добавить проверки, чтобы убедиться, что есть две части, прежде чем пытаться получить доступ к 2-му элементу массива. Вы могли бы (например) проверить, что строка содержит "?" прежде чем пытаться вызвать Split.

Ответ 4

Чтобы удалить последний "?" и все после него:

    string input = @"www.site.com/link/index.php?REMOVETHISHERE";
    input = input.Remove(input.LastIndexOf('?'));

    OR

    string input = @"www.site.com/link/index.php?REMOVETHISHERE";
    input = input.Substring(0, input.LastIndexOf('?'));

Теперь вывод будет:

www.site.com/link/index.php