Непонятно, почему вы не хотите использовать HttpUtility.Вы всегда можете добавить ссылку на System.Web
и использовать ее:
var parsedQuery = HttpUtility.ParseQueryString(input);
Console.WriteLine(parsedQuery["q"]);
Если это не вариант, возможно, этот подход поможет:
var query = input.Split('&')
.Single(s => s.StartsWith("q="))
.Substring(2);
Console.WriteLine(query);
Он разбивается на &
и ищет единственный результат разделения, который начинается с "q="
и берет подстроку в позиции 2, чтобы вернуть все после знака =
.Предполагается, что будет одно совпадение, что представляется разумным для этого случая, в противном случае будет выдано исключение.Если это не так, тогда замените Single
на Where
, зациклите результаты и выполните ту же операцию с подстрокой в цикле.
EDIT: , чтобы охватить сценарий, упомянутый вкомментарии, эта обновленная версия может быть использована:
int index = input.IndexOf('?');
var query = input.Substring(index + 1)
.Split('&')
.SingleOrDefault(s => s.StartsWith("q="));
if (query != null)
Console.WriteLine(query.Substring(2));