Мне нужно получить определенную часть из строки запроса GET-запроса. Например, если строка запроса:
action=balance&id=123&session_id=123&key=3843
Я хотел бы преобразовать его в
action=balance&id=123&session_id=123
т.е. я хотел бы отрезать часть параметра key. Как я мог это сделать?
Пожалуйста, укажите предпочитаемый язык. Я написал образец для javascript.
в asp.net вы можете использовать функцию разделения, которая вернет массив, и вы можете переставить их, оставив последний





После недолгого поиска в Google я нашел ответ здесь: https://www.codeproject.com/Tips/574956/How-to-get-URL-and-QueryString-value-in-an-ASP-NET
Короче говоря, вы можете получить то, что ищете, используя следующий метод:
Request.ServerVariables("QUERY_STRING")
Это не ответ на вопрос. Почему вы показываете, как получить строку запроса, хотя OP уже имеет строку запроса? Что ж, его формулировка немного неясна, но если вы внимательно прочитаете вопрос, вы увидите, что у него уже есть строка запроса, и его вопрос заключается в том, как получить определенную часть этой строки.
используйте функцию подстроки на выбранном вами языке
для напр. в javascript вы можете сделать это как
var f = "action=balance&id=123&session_id=123&key=3843";
var a = f.replace(f.substring(f.indexOf('&key')),"");
Есть и другие способы.
Пытаться
Regex.Replace(Request.RawUrl, @"&key.*", "")
строка qs = Request.params;
Это вернет коллекцию всех параметров в текущем
Этот ответ не поможет OP. Поскольку qs - строка, у него точно такая же проблема, как и раньше.
у вас есть альтернативное решение для этого @Binarus
Некоторые решения упоминаются в других комментариях или ответах. Но остерегайтесь подводных камней ...
Получите последний индекс символа '&'. Затем получите подстроку.
string url = Request.params;
int index = url.LastIndexOf('&');
var urlWithOutKey = url.Substring(0, index);
Это решение работает в этом частном случае, но не работает, если параметр &key не последний. В конце концов, вы не можете предсказать, в каком порядке параметры (сгенерированные браузером, клиентский код, сценарии оболочки и т. д.) Будут найдены в строке запроса.
Я изучил еще немного и нашел это решение
string url = Request.RequestUri.ToString();
Uri uri = new Uri(url);
string urlStringQuery = uri.Query;
int endIndex = urlStringQuery.IndexOf("&key", 1);
string query = urlStringQuery.Substring(1, endIndex - 1);
Это не удастся, если есть другой параметр, например &keyword. Кроме того, вы не можете полагаться на порядок параметров в строке запроса. Если параметр &key не последний, это тоже не сработает.
В ваших словах есть смысл, но я пишу этот API в соответствии с некоторой документацией, в которой уже описан формат URL с точным следствием параметров.
почему бы тебе не использовать string.split ()