Как можно средствами 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
Надеюсь, предложенные мною методы помогли Вам решить задачу, и Вы сможете дальше двигаться по пути своих свершений)
Удачи!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть кнопки который переключают Items, но у меня не получается запретить клик мышкой по ListBox, обшарил гугл, не нашёл(Либо я слепой)Помогите...
Проблема вот в чемЯ делаю успешно оплату по этому сервису у себя на сайте где после оплаты автоматический редирект на метод в котором в таблице...
Можно ли сделать сайт выложенный на хостинг доступным только с одного, двух ip адресов? Знаю что с помощьюhtaccess можно скрыть из доступа некоторые...