Ответ 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"
должен сделать это
У меня проблема, пытающаяся выяснить это. Мне нужно "исправить" некоторые ссылки, вот пример:
Итак, в основном я хочу удалить все, пока оно не достигнет? персонаж. Благодарим за помощь.
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"
должен сделать это
Хотя корректно обработанная операция строки будет работать, более общий способ извлечения частичной информации 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()
перегрузок.
Используйте 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
.
Чтобы удалить последний "?" и все после него:
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