Разобрать сообщение Telegram JSON по разрыву строки

Я хотел бы удалить разрывы строк из текстового сообщения телеграммы, используя кодирование MQL4. Я хотел бы преобразовать текст в формат, который MT4 может использовать для размещения сделки.

Проблема в том, что телеграмм-бот читает чат, а текст преобразуется в однострочный с разделителем \n. Мне нужно разделить разные части сообщения на отдельные Int/Str/Double и т. д., чтобы я мог использовать их для размещения сделки с помощью кода MQL4.

Формат сообщения следующий:

"text":"XRPUSD\nBUYLIMIT\n0,15010\nSL 0,18000\nTP 0,14000"

Это сообщение приходит как msg.message_text, но я не вижу фактического сообщения, если не использую Postman. Я просто знаю формат из библиотеки конвертеров JSON.

Опять же, мне нужно разделить разные части сообщения на отдельные Int/Str/Double и т. д., чтобы я мог использовать их для размещения сделки с помощью кода MQL4.

Надеюсь, я спрашиваю и представляю данные в понятной форме. Пожалуйста, дай мне знать.

Спасибо


person Jose Tollinchi    schedule 14.03.2020    source источник


Ответы (1)


Я думаю, вы можете использовать метод StringReplace Вот так

string text="XRPUSD\nBUYLIMIT\n0.15010\nSL 0.18000\nTP 0.14000";
int replaced=StringReplace(text,"\n","/");
Print("Replaced: ", replaced,". Result=",text);
person Khayankhyarvaa Turmandakh    schedule 14.03.2020
comment
Спасибо большое. Он должен быть достаточно гибким, чтобы преобразовывать любой экземпляр сообщений. Это форматы: Строка 543 msg.message_text=item[message][text].ToStr(); Строка 544 msg.message_text=StringDecode(msg.message_text); Строка 544 делает то, что вы рекомендуете? - person Jose Tollinchi; 15.03.2020
comment
Я сделал небольшую модификацию, и она работает для удаления \n. Любая идея, как разделить результаты на отдельные переменные? Можно ли анализировать результаты? - person Jose Tollinchi; 15.03.2020
comment
Есть ли ключевое значение в вашем результате? - person Khayankhyarvaa Turmandakh; 15.03.2020
comment
Я использовал строковую функцию to_split и разделил отдельные значения. Теперь мне нужно иметь возможность вытащить их в переменные. Сейчас я могу их только распечатать. Мне нужно либо сохранить их в переменные, либо вытащить их из массива строк to_split - person Jose Tollinchi; 15.03.2020
comment
На самом деле я не знаю MQL, я просто читаю документацию по вашим вопросам. Возможно, вы можете использовать StringSplit. Как и эта строка to_split=life_is_good; // Строка для разделения на подстроки string sep=_; // Разделитель в виде символа ushort u_sep; строка результата[]; // Массив для получения строк //--- Получим код разделителя u_sep=StringGetCharacter(sep,0); //--- Разделим строку на подстроки int k=StringSplit(to_split,u_sep,result); - person Khayankhyarvaa Turmandakh; 15.03.2020
comment
Да исправить. Это просто не сохраняет их в значения, которые я могу использовать позже - person Jose Tollinchi; 15.03.2020