Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 дек 2024, 07:55

Число

Автор artm81, 09 мая 2012, 20:15

0 Пользователей и 1 гость просматривают эту тему.

artm81

Подскажите,пожалуйста, как в переменной типа СТРОКА найти символ, тип которого ЧИСЛО. Например,  Строка = " В этой строке найти число 5" . (Вот при обходе этой строки посимвольно нужно узнать,когда дойдём до 5). Спасибо!

sadovod

Ну, например вот так:
   строка = "8 В эт3ой стр4оке найти число 5";
   ДлинаСтроки = СтрДлина(строка);
   Для i=1 По ДлинаСтроки Цикл
      СимКод = КодСимвола(строка, i);
      Если СимКод > 47 И СимКод < 58 Тогда
         Сообщить("Цифра в позиции строки N " + i)
      КонецЕсли;
   КонецЦикла;

artm81

А есть другой способ не по КодСимвола?

Dethmontt

Да
1. через массив чисел
2. Регулярные выражения
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

LexaK

Есть не по КодСимвола

Строка = " В этой строке найти число 5";
Для поз=1 По СтрДлина(Строка) Цикл
      Символ = Сред(строка, поз, 1);
      Если Символ >= "0" И Символ <= "9" Тогда
         Сообщить("Цифра в позиции строки N " + поз)
      КонецЕсли;
КонецЦикла;

как-то так. Если не секрет зачем такие загибы?
если помогло нажмите: Спасибо!

Dethmontt

Интересно как отработает
Если "1" >= "0" И "1" <= "9" Тогда ???????
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Еще как вариант
Строка = " В этой строке найти число 5";
Для поз=1 По СтрДлина(Строка) Цикл
      Символ = Сред(строка, поз, 1);
      Попытка
            Ч = Число(Символ);
            Сообщить("В строке есть число = "+Ч);
      Исключение
      КонецПопытки;
       
КонецЦикла;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Dethmontt

Через попытку не Айс...

Процедура КнопкаВыполнитьНажатие(Кнопка)

   SearchOfNumbers(" В этой строке найти число 5");
   
КонецПроцедуры

Функция SearchOfNumbers(val str)
   
   RegExp = Новый COMObject("VBScript.RegExp");
   RegExp.IgnoreCase = false;  //Игнорировать регистр
   RegExp.Global = true;       //Поиск всех вхождений шаблона
   RegExp.MultiLine = true;    //Многострочный режим    
   
   RegExp.Pattern = "\d+";
   Matches=RegExp.Execute(str);
   Count = Matches.Count();
   if Count > 0 then  
      for h = 0 to Count - 1 do
           message(Matches.Item(h).Value);
       enddo;
   endif;              
         
КонецФункции   
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

sadovod

Dethmontt, :ooifh:
Щас кто-нибудь напишет на ассемблере :)
Или в машинных кодах :) :)

Dethmontt

Ну такой вариант более правильный.
На выходе ты получишь из строки: "сколько 567 тут 54 чисел 7" //Тут три числа, а не шесть
= 567
= 54
= 7
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск