как убрать пробел в строке

 

Есть какая то строка. Как в ней убрать пробел ? 

Пытаюсь как то вот так : 

string profitst= "";
int pr = StringFind(str[9]," ",0);
if (pr>0) profitst = StringSubstr(str[9],0,pr-1);
profitst+= StringSubstr(str[9],pr,StringLen(str[9]));

//выдает pr=-1. т.е. пробел не найден.
 
 
Dmitiry Ananiev:

Есть какая то строка. Как в ней убрать пробел ? 

Пытаюсь как то вот так : 


Есть готовая функция по замене StringReplace:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
void OnStart()
  {
   string str="строка, в которой";        // строка, в которой будет осуществляться замена
   string find=" ";                       // искомая подстрока 
   string replacemen="";                  // подстрока, которая будет вставлена в найденные места 
   StringReplace(str,find,replacemen);
   Print(str);
  }     
//+------------------------------------------------------------------+

и результат:

Test_ru (AUDCAD.m,M30)  строка,вкоторой
Документация по MQL5: Строковые функции / StringReplace
Документация по MQL5: Строковые функции / StringReplace
  • www.mql5.com
Строковые функции / StringReplace - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Файлы:
Test_ru.mq5  2 kb
 

Если по правильному, то данная задача решается не просто одним StringReplace, а аж тремя StringReplace.


Скорее всего поймет тот, кто решал подобную задачу на SQL.
Пользователь может же ввести строку не обязательно с двумя пробелами, их может бы 2, 3, 4, а то и 5 подряд между словами.
Писать цикл проверяя осталось ли 2 пробела подряд после применения StringReplace можно, но вариант не применим к запросам на SQL, так как производительность падает в тысячи раз при применении курсора.

Тут же на помощь приходит несложная логика:
Пускай имеем строку "строка,_в__которой___пробел____красив" (пробелы заменены символом _ для лучшей наглядности)

1) Найдем и заменим каждый пробел _ на _# (где # спецсимвол, который не может присутствовать в исходной строке):
"строка,_#в_#_#которой_#_#_#пробел_#_#_#_#красив"

2) Найдем и заменим все вхождения  #_ на пустую строку:
"строка,_#в_#которой_#пробел_#красив"

3) Найдем и заменим все вхождения  # на пустую строку:

"строка,_в_которой_пробел_красив"

4) Не забудем добавить trim (что бы отсечь пробелы спереди и сзади)
 
Dmitiry Ananiev:

Есть какая то строка. Как в ней убрать пробел ? 

Пытаюсь как то вот так : 


Ваш код - рабочий; раз pr == -1, значит пробела действительно нет. Но через StringReplace() это делать гораздо удобнее.
 
Sergey Dzyublik:

Если по правильному, то данная задача решается не просто одним StringReplace, а аж тремя StringReplace.


Скорее всего поймет тот, кто решал подобную задачу на SQL.
Пользователь может же ввести строку не обязательно с двумя пробелами, их может бы 2, 3, 4, а то и 5 подряд между словами.
Писать цикл проверяя осталось ли 2 пробела подряд после применения StringReplace...


Функция StringReplace(someString, " ", "") удалит из строки someString ВСЕ пробелы.
 

всем спасибо 

решил проблему с помощью 

StringReplace(str,find,replacement);

 
Sergey Dzyublik:

Если по правильному, то данная задача решается не просто одним StringReplace, а аж тремя StringReplace.

...


Достаточно одного: