Вход | Регистрация

1С:Предприятие ::

Метки:

символы символы числа-числа-числа символы. Кто сможет?

Я
   Sh_s
 
16.01.04 - 10:19
Есть ли возможность из строки вида:
"символы символы символы числа-числа-числа символы символы"

Получить эти самые "числа-числа-числа".
Количество символов и пробелов между ними варьируется свободным образом.

Желательно на примере.
 
 
   Львенок
 
1 - 16.01.04 - 10:58
Можно. Только строку придется по символу перебирать. Минут через пять - десять предоставлю пример.
___
Искренне Ваш, Львенок.
   Черт
 
2 - 16.01.04 - 10:58
Код на VB пойдет?
Stroka = "Твоя строка"
dlStroki = Len(Stroka)
For i = 1 To dlStroki
Param = Mid(Stroka, i, 1)
If InStr("1234567890", Param) > 0 Then
Only_Number = Only_Number & Param
End If
Next i
в Only_Number получишь все числа которые есть в строке
   ally
 
3 - 16.01.04 - 11:02
Число="";
ДлинаСтр=СтрДлина(Строка);
От 1 до ДлинаСтр Цикл
СокрЛ(Строка);
Символ=Прав(Строка,1);
Если (Число(Символ)<>0) или (КодСимв(Символ)=КодНуля)Тогда
     Число=Число+"Символ"; 
КонецЦикла;
Коднуля не помню, но можно посмотреть той же проц.
Пните если что не так
   ally
 
4 - 16.01.04 - 11:09
Фу нафиг От 1 до ДлинаСтр Цикл
Заменить на Для По
но смысел ясен, надеюсь
   Черт
 
5 - 16.01.04 - 11:12
На 1с функции InStr соответствует СтрЧислоВхождений
   Черт
 
6 - 16.01.04 - 11:17
ally извени, но Символ=Прав(Строка,1) в цикле из строки всегда будет выбирать один и тот же символ
   ally
 
7 - 16.01.04 - 11:20
согласна Тут надо цикл по символам спсб
   stek
8 - 16.01.04 - 11:23
По-моему можно так:
Символ = Прав(Строка,1);
Строка = Лев(Строка,СтрДлина(СокрЛП(Строка))-1);
   Львенок
 
9 - 16.01.04 - 11:23
Процедура Выполнить()
    Стр="олрвам4353лоролр-5345345олр345.35 ло-35.4 345";
    Сообщить ("Выдергиваем числа из строки: "+Стр);
    Стр=Стр+" "//Добавляем для простоты выдергивания числа даже из конца строки

    СДлина=СтрДлина(Стр); ЭтоЧисло=0;
    
    Для К=1 по СДлина Цикл
        Сим=Сред(Стр,К,1);
        Если ЭтоЧисло=0 Тогда//Еще не нашли начала числа

            Если Найти("-+0123456789",Сим)>0 Тогда 
                Значение=Сим; ЭтоЧисло=1//Нашли знак с которого может начинаться число

            Иначе
                Продолжить//Это не может быть началом числа

            КонецЕсли;
        Иначе//Мы уже нашли начало числа

            Если Найти("0123456789.",Сим)>0 Тогда//Нашли знак который может содержаться в числе

                Значение=Значение+Сим;
            Иначе//Все число кончилось

                Значение=Число(Значение);ЭтоЧисло=0;
                Сообщить (""+Значение)//Вот тут готовое числовое значение

            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
   Львенок
 
10 - 16.01.04 - 11:26
Не парьтесь. Вот вариант который работает. Плюсы, минусы, дробные части. Единственное что, лень было придумывать, чтобы он игнорировал одинокостоящие минуса (дефисы), а то он их за -0 поди посчитает.
___
Искренне Ваш, Львенок.
 
  Рекламное место пустует
   Черт
 
11 - 16.01.04 - 11:31
На 1С это буде выгледеть так
Строка="Твоя строка";
ДлинаСтр=СтрДлина(Строка); 
Для И=1 ПО ДлинаСтр Цикл
Символ=Сред(Строка,И,1);
Если СтрЧислоВхождений("1234567890",Символ)>0 Тогда
ЦифрыВСтроке=ЦифрыВСтроке & Символ;
КонецЕсли;
КонецЦикла;
   Черт
 
12 - 16.01.04 - 11:37
Для царя
а в строке Значение=Значение+Сим; не будет ли у тебя суммы этих цифр?
   ally
 
13 - 16.01.04 - 11:37
Да уже не паримся, но все равно интересно было
   Львенок
 
14 - 16.01.04 - 11:40
(12) Не будет. Значение и Сим это строкомые величины. Я же проверил все перед тем, как выложить. Возьми, копирни в конфигуратор и погляди, чего оно выведет. Это же работающий пример.
___
Искренне Ваш, Львенок.
   Львенок
 
15 - 16.01.04 - 11:44
(13) Кстати ally объясни мне одну вещь. Вот это "КодСимв(Символ)=КодНуля" - зачем? Почему не "Символ="0" ?
P.S. А код "0" - 48(Dec), если мне не изменяет пямять
___
Искренне Ваш, Львенок.
   Черт
 
16 - 16.01.04 - 11:46
я уже свою версию проверил, прежде чем выложить.
Но условие задачи не полное,
Могут ли в строке быть отрицательные числа,дробные, и как записываются дробные 3,4 или 3.4
Если есть дробные то сколько знаков после запятой может быть.Должны ли быть между числами пробелы при выводе?
Т.е задачу можно усложнить, и тогда сам понимаешь, что ни твой ни мой вариант не канает.
   ally
 
17 - 16.01.04 - 11:46
а потомучто ум за разум заходит иногда. Тоже верное замечание, принимается.
   Черт
 
18 - 16.01.04 - 11:49
Вот сводная таблица, может кому нужна будет
http://alldlya.narod.ru/acsii.htm
   Sh_s
 
19 - 19.01.04 - 11:39
Спасибо!
Суть в том что: В номнклатуре забит товар, эти самые-"символы символы числа-числа-числа символы символы". Числа-это код товара у поставщика: 132-6468-546. Так что эти варианты прокатывают. Все молодца !


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует