Как можно средствами C# получить определенную часть строки?
У меня есть такая строка:
loc += "&sessionKey=16818";
Отсюда нужно получить само значение sessionkey, то есть только 16818. Как это можно сделать?
Собственно, как Вы уже увидели в комментариях, Ваша проблема имеет уйму решений!
Пройдемся по каждому)
Так как нужное Вам значение находится после символа '=', почему бы этим не воспользоваться?
Для нахождения последнего в строке индекса, по которому находится символ '=', будем использовать метод string.LastIndexOf(char)
// Строка, откуда будем доставать значение
string parseFrom = "&sessionKey=16818";
// Возьмем подстроку из заданной строки, начиная со следующего после '=' индекса
string value = parseFrom.Substring(parseFrom.LastIndexOf('=') + 1); // 16818
Также мы можем разделить строку на массив подстрок по все тому же символу '=', используя метод string.Split(params char[]), тогда последней подстрокой и будет искомое значение:
// Строка, откуда будем доставать значение
string parseFrom = "&sessionKey=16818";
// Разделим строку по символу '=' и возьмем последнюю подстроку
string value = parseFrom.Split('=').Last(); // 16818
По аналогии с методом LastIndexOf мы можем проигнорировать все символы строки до индекса, находящегося сразу после последнего в строке символа '=', взяв оставшуюся последовательность:
// Строка, откуда будем доставать значение
string parseFrom = "&sessionKey=16818";
// Пропустим все до следующего за '=' символа
string value = string.Concat(parseFrom.Skip(parseFrom.LastIndexOf('=') + 1)); // 16818
Или так:
// Строка, откуда будем доставать значение
string parseFrom = "&sessionKey=16818";
// Пропустим все до следующего за '=' символа
string value = string.Concat(parseFrom.SkipWhile(x => x != '=').Skip(1)); // 16818
Или же пропустим все символы, что не являются цифрой, взяв из остатка только цифры:
// Строка, откуда будем доставать значение
string parseFrom = "&sessionKey=16818";
// Пропустим все не цифры, взяв из остатка только цифры)
string value = string.Concat(parseFrom.SkipWhile(x => !char.IsDigit(x)).TakeWhile(x => char.IsDigit(x))); // 16818
И только для того, чтобы пост был полным, предложу Вам решение с помощью регулярных выражений (см. Regex):
// Строка, откуда будем доставать значение
string parseFrom = "&sessionKey=16818";
// Достанем из строки последнее числовое значение
string value = new Regex(".*?(\\d+)").Match(parseFrom).Groups.Cast<Group>().Last().Value; // 16818
Я вижу, что Ваша подстрока ну больно напоминает часть URL. Так что если Ваша полная строка действительно является таковым, то, используя встроенный функционал .NET, мы можем спокойно получить значение параметра URL по его имени
Ведь, как говорится, все уже украдено изобретено до нас)
Воспользуемся методом HttpUtility.ParseQueryString(string):
// Строка, откуда будем доставать значение
string parseFrom = "&sessionKey=16818";
// Полный URL
string loc = "http://127.0.0.1/?someParam=0";
// Прибавим к нему наш параметр, как в Вашем примере
loc += parseFrom;
Uri parseUri = new Uri(loc);
// Выпарсим значение параметра sessionKey
string value = HttpUtility.ParseQueryString(parseUri.Query).Get("sessionKey"); // 16818
Или же еще проще:
Так как Uri.Query содержит в себе все сведения запроса, мы можем только ими и оперировать! Выглядеть это будет так:
// Строка, откуда будем доставать значение
string parseFrom = "&sessionKey=16818";
// Выпарсим значение параметра sessionKey
string value = HttpUtility.ParseQueryString(parseFrom).Get("sessionKey"); // 16818
Надеюсь, предложенные мною методы помогли Вам решить задачу, и Вы сможете дальше двигаться по пути своих свершений)
Удачи!
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости