|
Как вытащить из строки числовое значение? | ☑ | ||
---|---|---|---|---|
0
prilforreal
03.10.17
✎
08:51
|
Доброго утра! Интересует такой вопрос, есть реквизит материал с типом строка, выглядит как "Мат Стандарт 240-501" первые 3 цифры (в данном случае 240) - ширина полотна, каким образом можно вытащить их в отдельную переменную?
|
|||
1
1c-bs
03.10.17
✎
08:52
|
Парсить строку жеж!
|
|||
2
Филиал-msk
03.10.17
✎
08:56
|
Посимвольно. Цифра? Не... Цифра? Не... О, цифра-цифра-цифра... Не... Ну и ладно, вот число и набралось.
|
|||
3
Рэйв
03.10.17
✎
08:57
|
Строчка="чстото250-568,7899";
числа="0123456789"; Кол=СтрДлина(Строчка); спДанные=Новый СписокЗначений; Ч=""; Для н=1 По кол Цикл Сим=Сред(Строчка,н,1); Сообщить(Сим); Если Найти(числа,Сим)>0 Тогда Ч=Ч+Сим; Иначе Если Ч<>"" Тогда спДанные.Добавить(Число(Ч)); Ч=""; КонецЕсли; КонецЕсли; КонецЦикла; Если Ч<>"" Тогда спДанные.Добавить(Число(Ч)); Ч=""; КонецЕсли; спДанные.ВыбратьЭлемент(); |
|||
4
Рэйв
03.10.17
✎
08:58
|
как пример
|
|||
5
prilforreal
03.10.17
✎
08:58
|
(1) Будьте добры, разъясните) (2) Какой функцией, в какой процедуре? Я прошу прощения в 1с еще далеко не асс, потому интересуюсь)
|
|||
6
Филиал-msk
03.10.17
✎
09:00
|
(5) Ну, это, в которой сам напишешь. Да.
|
|||
7
igorPetrov
03.10.17
✎
09:03
|
(0) Регулярные выражения, раз в 1С не "асс".
|
|||
8
DES
03.10.17
✎
09:37
|
Перебирая последователь символы строки пока не встретишь цифру, кидай этот символ в другую переменную, пока не встретишь нецифру, потом пропуск одного символа, и опять кидаешь символы до конца строки в другую переменную
Потом Ширина = Число(переменная1); |
|||
9
Serg_1960
03.10.17
✎
09:45
|
Эээ... включая режим дочерей офицеров "Здесь не всё так однозначно": автору нужно найти позицию символа "-" в строке и далее двигаясь к началу и к концу строки от этой позиции, собрать все символы в цифр в две переменных... вот как-то так для начала.
|
|||
10
Serg_1960
03.10.17
✎
09:48
|
* мда... "собрать все символы в цифр в две переменных" --> "собрать цифровые символы в две переменные"
|
|||
11
Волшебник
модератор
03.10.17
✎
09:50
|
(5) пишется "ас"
|
|||
12
vis_tmp
03.10.17
✎
09:51
|
(11) Может, он имел в виду "ass"? )
|
|||
13
Пес Барбос
03.10.17
✎
09:53
|
Все зависит от того где встречается "ширина полотна", если это всегда в конце наименования материала, то я бы искал позицию первого пробела справа (НаправлениеПоиска.СКонца) и "резал" до конца строки. и потом уже ее от начала до "-".
Если встречается в разных, то воспользовался бы РазложитьСтрокуВМассивПодстрок(...) и там бы уже искал строку с цифрами и снова "резал" от начала до "-" |
|||
14
Волшебник
модератор
03.10.17
✎
09:54
|
(12) Это совсем другое слово :)
|
|||
15
Numerus Mikhail
03.10.17
✎
09:55
|
Делается в пару строк с помощью регулярки
|
|||
16
Serg_1960
03.10.17
✎
10:14
|
Регулярка хороша если выражения регулярные. А если встретится "Мат.Стандарт-12 240-501 (ширина 240,05)"? :))
|
|||
17
Базис
naïve
03.10.17
✎
10:43
|
Не надо разбирать строку, храните в новом реквизите или свойстве.
|
|||
18
DES
04.10.17
✎
13:13
|
(16) он же определил формат строки
(17) ага, а где взять это свойство если не из строки? |
|||
19
Fish
04.10.17
✎
13:20
|
(18) "где взять это свойство если не из строки" - Вбить руками, конечно же :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |