|
Число из строки | ☑ | ||
---|---|---|---|---|
0
1C2SS
20.05.13
✎
11:38
|
1с 8.2
Подскажите как проще всего получить число из строки содержащей число и текст. (Это характеристика. она содержит длину и цвет). |
|||
1
Cyberhawk
20.05.13
✎
11:39
|
Хранить числовые значения характеристик в реквизитах/свойствах характеристик
|
|||
2
CepeLLlka
20.05.13
✎
11:43
|
(0)Парси удаляя по коду символа буквы, оставляя только цифры..
Или возможно у тебя у тебя они разделены спецсимволом каким(запятой, точкой) тогда просто обрезай строку и потому уже переводи Число() |
|||
3
Defender aka LINN
20.05.13
✎
11:46
|
(2) И что получится со строкой "2 пары 37 размера"?
|
|||
4
palpetrovich
20.05.13
✎
11:46
|
RE = New COMObject("VBScript.RegExp");
RE.Global = истина; RE.IgnoreCase = истина; RE.Multiline = истина; RE.Pattern = "\d+"; Сообщить("Совпадения:"); Попытка Для каждого Match Из RE.Execute(Строка) Цикл Сообщить("" + Match.Value + " @ " + Match.FirstIndex); КонецЦикла; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; // Автор Лефмихалыч или orefkov ...я так не разобрался :) |
|||
5
CepeLLlka
20.05.13
✎
11:54
|
(3) "2 пары" Это что длина такая? :)
|
|||
6
Defender aka LINN
20.05.13
✎
11:54
|
(5) Это слово, которое первое в голову пришло :)
|
|||
7
1C2SS
20.05.13
✎
11:57
|
Функция ЧисловаяЧасть(стр)
Для й = 0 По СтрДлина(стр) Цикл Если Сред(стр,й,1)="," Тогда Возврат Число(Лев(стр,й-1)); КонецЕсли КонецЦикла; Возврат "Ошибка"; КонецФункции как то так |
|||
8
palpetrovich
20.05.13
✎
11:58
|
(7) открой для себя метод Найти :)
|
|||
9
1Сергей
20.05.13
✎
11:59
|
хотите без циклов и ВК? :)
|
|||
10
palpetrovich
20.05.13
✎
12:03
|
(9) по-ходу он уже справился :)
|
|||
11
Сияющий Асинхраль
20.05.13
✎
12:05
|
(9) Хотим. Интересно узнать на будущее...
|
|||
12
1C2SS
20.05.13
✎
12:06
|
Функция ЧисловаяЧасть(стр)
индекс = Найти(стр,","); Если индекс > 0 Тогда Возврат Лев(стр,индекс-1); КонецЕсли; Возврат "Ошибка"; КонецФункции // ЧисловаяЧасть() |
|||
13
1Сергей
20.05.13
✎
12:15
|
(11)
Функция ПолучитьЧисла(ИзСтроки, Числа = Неопределено, ТекущееЧислоСтр = "") Если Числа = Неопределено Тогда Числа = Новый СписокЗначений; КонецЕсли; Если ИзСтроки = "" Тогда Если ТекущееЧислоСтр<>"" Тогда Числа.Добавить(Число(ТекущееЧислоСтр)); КонецЕсли; Возврат Числа; КонецЕсли; Если (Лев(ИзСтроки, 1)>="0") И (Лев(ИзСтроки, 1)<="9") Тогда ТекущееЧислоСтр = ТекущееЧислоСтр + Лев(ИзСтроки, 1); Иначе Если ТекущееЧислоСтр<>"" Тогда Числа.Добавить(Число(ТекущееЧислоСтр)); КонецЕсли; ТекущееЧислоСтр = ""; КонецЕсли; Возврат ПолучитьЧисла(Сред(ИзСтроки, 2), Числа, ТекущееЧислоСтр); КонецФункции Процедура КнопкаВыполнитьНажатие(Кнопка) Сообщить(ПолучитьЧисла(ПолеВвода)); КонецПроцедуры |
|||
14
Сияющий Асинхраль
20.05.13
✎
12:15
|
(12) А кто сказал, что обязательно запятые будут?
|
|||
15
palpetrovich
20.05.13
✎
12:20
|
если число в строке точно одно, то так покатит:
Перем RE; Функция ЧисловаяЧасть(стр) Числа = Новый СписокЗначений; Попытка Для каждого Match Из RE.Execute(стр) Цикл Числа = "" + Match.Value; КонецЦикла; Исключение КонецПопытки; Возврат "Ошибка"; КонецФункции // ЧисловаяЧасть() RE = New COMObject("VBScript.RegExp"); RE.Global = истина; RE.IgnoreCase = истина; RE.Multiline = истина; RE.Pattern = "\d+"; |
|||
16
palpetrovich
20.05.13
✎
12:20
|
* "Числа = Новый СписокЗначений;" - убрать :)
|
|||
17
1C2SS
20.05.13
✎
12:21
|
(13) Красиво.
Но чем рекурсия лучше цикла ? |
|||
18
1Сергей
20.05.13
✎
12:22
|
(17) в данном случае ничем :) даже хуже
|
|||
19
Сияющий Асинхраль
20.05.13
✎
12:23
|
(17) +100500 :-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |