Получить оставшийся текст после вычитания

#c#

#c#

Вопрос:

как я могу получить оставшийся текст / значения ImageString и вернуть его в переменной? В моем текущем коде ниже я получил ошибку.

Примечание: ImageString = data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCAOEAlgDASIAAhEBAxEB/8QAHQABAAICAwEBAAAAAAAAAAAAAAUGAwQBAgcICf/EAEkQAQABAwMCAgcCDAMFBgcAAAABAgMEBREhMTIGEgciQVFhcYETkQgUIzNCUnKCobHB0RVikkNjc7LwFhckNKL

 var _strings= { response = "True", name = "John", ImageString = "(random text here (1-1000 of characters maybe?))"};
var _split =  _strings.Substring(_strings.IndexOf("ImageString"), _strings.Length);
  

«Индекс и длина должны ссылаться на местоположение в строке.

Ожидаемый результат: я хочу получить весь текст из «ImageString»

Комментарии:

1. Можете ли вы также поделиться тем, какой вывод вы хотите получить, на основе предоставленного ввода?

2. Мистический qweqwe пришел и испортил весь ваш день.. _strings.Substring(_strings.IndexOf("ImageString"), _strings.Length);

3. ваш текст _strings выглядит как JSON строка. Было бы лучше выполнить десериализацию в Object и получить значение оттуда.

4. Что это за строка? var _strings= { response = «True», name = «John», ImageString = «(здесь случайный текст (может быть, 1-1000 символов?))»}; это выглядит как анонимный объект. Также при подстроке вы должны быть на 100% уверены, что indexOf(«ImageString») будет равен нулю или выше, потому что, если он не существует, он вернет -1, и вы не сможете начать подписку с минус единицы и _string . длина представляет собой длину текста, но индекс для последнего символа равен _string . длина-1

Ответ №1:

В вашем конкретном случае вы можете использовать сериализатор JSON:

 public class Data
{
    public string ImageString { get; set; }
}

var data = Newtonsoft.Json.JsonConvert.Deserialize<Data>(_strings);

var myImageString = data.ImageString;
  

Комментарии:

1. «Недопустимый символ после синтаксического анализа имени свойства. Ожидалось ‘:’, но получено: =. Path «, строка 1, позиция 14».

2. @FaceLessNoOne, вы можете добавить к ответу код, который вы пробовали, и сообщение об ошибке.

3. Я добавил выходные данные моей строки. и ошибка, с которой я сталкиваюсь после того, как тестирую тот же код, что и вы.

Ответ №2:

 var _strings= { response = "True", name = "John", ImageString = "(random text here (1-1000 of characters maybe?))"};
  

Приведенное выше выглядит как анонимный объект, но я предполагаю, что под ним вы подразумеваете структуру вашего текста.

 var imageStringIndex= _strings.IndexOf("ImageString");
    var _split =  _strings.Substring(imageStringIndex<0?0:imageStringIndex, _strings.Length - 1);
  

или

   var _split =  _strings.Split("ImageString".ToCharArray()).Last();
  

вы оба работаете в своем случае

Ответ №3:

Если я вас правильно понял, и вы настаиваете на string манипуляциях (не синтаксическом анализе Json)

 string _strings = 
  "{ response = "True", name = "John", ImageString = "bla-bla-bla" };";
string toFind = "ImageString";

int p = _strings.IndexOf(toFind);

// bla-bla-bla
string remain = p < 0
  ? ""  //TODO: Not found at all (shall we return an empty or entire string?)
  : _strings
      .Substring(p   toFind.Length)
      .TrimStart(' ', '=') // to be on the safe side: what if data starts from =
      .TrimStart('"', ' ')
      .TrimEnd('}', ';', ' ')
      .TrimEnd('"', ' ');
  

Ответ №4:

Первая проблема, которую я вижу, заключается в том, что

 var _strings= { response = "True", name = "John", ImageString = "(random text here (1-1000 of characters maybe?))"};
  

Это не строка, а попытка создания анонимного объекта?

Если это так, вы можете объявить объект с помощью:

 var _strings = new { response = "True", name = "John", ImageString = "(random text here (1-1000 of characters maybe?))" };
  

Затем получить доступ к любому свойству объекта, используя стандартный синтаксис c #:

 var imageString = _strings.ImageString;
  

Ответ на ваш вопрос во многом зависит от того, откуда поступает информация, поскольку вы можете объявить ее и манипулировать ею тысячью различных способов, если у вас есть над ней контроль.