Как выделить число из сложносоставной строки? - страница 2

 
leon_17 #:

Нет строка непостоянная. То есть число может находиться где угодно и не факт, что оно там вообще есть. Интересует сам принцип (подход) поиска необходимого числа в тексте.

Большое спасибо ВСЕМ за предложенные решения! Буду изучать... 

в строке может присутствовать 2 числа и более?

 
Renat Akhtyamov #:

может лучше использовать такое?

И что это даст? Тем более, что это, похоже, не ASCII, не 1251, не KOI-8, а 866 - "альтернативная кодировка ГОСТ" или что-то близкое.

 
JRandomTrader #:

И что это даст? Тем более, что это, похоже, не ASCII, не 1251, не KOI-8, а 866 - "альтернативная кодировка ГОСТ" или что-то близкое.

как я не люблю невнимательность и бессильность в нештатных ситуациях.....

поэтому не вижу смысла пробивать таким мозг нравоучениями

например цифры на японском, да?

;)

 
Renat Akhtyamov #:

может лучше использовать такое?


Вот уже используется…

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как выделить число из сложносоставной строки?

fxsaber, 2023.12.21 09:01

bool IsNumber( const ushort Char )
{
  return((Char >= '0') && (Char <= '9'));
}

double GetDouble( const string Str )
{
  const int Size = StringLen(Str) - 1;
  double Res = 0;
  
  for (int i = 0; i <= Size; i++)
    if (IsNumber(Str[i]) ||
        ((Str[i] == '-') && (i < Size) && IsNumber(Str[i + 1])))
    {
      Res = (double)StringSubstr(Str, i);
      
      break;
    }    
  
  return(Res);
}

 
Renat Akhtyamov #:

как я не люблю невнимательность и бессильность в нештатных ситуациях.....

поэтому не вижу смысла пробивать таким мозг нравоучениями

Если это намёк на что-то менее очевидное, чем (chr-'0')<=9, прошу расшифровать.

 
Alexey Viktorov #:

На мой взгляд, при всём неприятии его кодов, это лучший вариант

Помимо того, что он не даст правильного результата при отсутствии числа - там есть и принципиальная ошибка. И не одна

 
Artyom Trishkin #:

Может быть вбито ручками...

Например: "Я встретил Вас спустя 6 лет, и думал не узнаю, Вы были в чёрных галифе, в зубах была сигара" ...

Мда уж...
На самом деле в 99% случаях использования StringToDouble, именно так и происходит, что можно взять цифровое значение напрямую из первоисточника без всяких стрингов, предварительно об этом позаботившись.
И в данном случае, я очень сомневаюсь, что при таком уровне вопроса, человек парсит какой-то информационный сайт через вэб запросы. 
Забавно наблюдать, когда человек спрашивает - как выстрелить себе в ногу, и все ему начинают давать советы про то, под каким углом стрелять и как плавно нажимать курок, вместо того, чтобы спросить - а зачем стрелять себе в ногу?

 
Alexey Viktorov #:

Вот уже используется…


я предлагаю использовать такое

StringToCharArray

 
Nikolai Semko #:
Мда уж...
На самом деле в 99% случаях использования StringToDouble, именно так и происходит, что можно взять цифровое значение напрямую из первоисточника без всяких стрингов, предварительно об этом позаботившись.
И в данном случае, я очень сомневаюсь, что при таком уровне вопроса, человек парсит какой-то информационный сайт через вэб запросы. 
Забавно наблюдать, когда человек спрашивает - как выстрелить себе в ногу, и все ему начинают давать советы про то, под каким углом стрелять и как плавно нажимать курок, вместо того, чтобы спросить - а зачем стрелять себе в ногу?

Николай, вопрос у него хороший - парсинг.

Часто бывает нужен, при анализе страниц из интернета.

Мы их не создаем, а читаем.
 
Я бы, наверное, предпочёл что-то вроде s/^\D*(\d+(\.\d*)?)\D*$/\1/ , но в нормальном виде не завезли.