|
Как записать в переменную только числовые значения? | ☑ | ||
---|---|---|---|---|
0
breezee
25.11.15
✎
21:41
|
Нашел вот этот код, но он не рабочий
Новая=""; Для к = 1 По СтрДлина(Стр) Цикл Если Найти("0123456789.",Сред(Стр,к,1))=1 Тогда Новая = Новая+Сред(Стр,к,1); КонецЕсли; КонецЦикла; В цикле нормально просматривает по очереди все значения. Там где совпадает - возвращает 1, но на выходе Новая = "". Подскажите, что не так? |
|||
1
breezee
25.11.15
✎
21:48
|
Наверное проблема именно с функцией НАйти() написано что она старая. Сделал так:
Новая=""; Для к = 1 По СтрДлина(Стр) Цикл Если СтрНайти("0123456789.",Сред(Стр,к,1))<>0 Тогда Новая = Новая+Сред(Стр,к,1); КонецЕсли; КонецЦикла; Хотя будет не удобно, если 0 символ будет тоже число. |
|||
2
Artful Den
25.11.15
✎
21:50
|
а 0 когда не числом стал?
|
|||
3
Artful Den
25.11.15
✎
21:52
|
так-то у тебя "." - не число, если что
|
|||
4
ВРедная
25.11.15
✎
21:55
|
(3) т.е. ты предлагаешь 123.25 записывать как 12325?
|
|||
5
breezee
25.11.15
✎
21:56
|
(2) (3) Я имею ввиду, если нулевой символ будет числом, а не если нуль будет числом. "." тоже нужна. У меня в задание есть строки "КО60.09-КО09", на пример. Я хочу 60.09 и 09 записать как элементы массива. Сейчас добавил разбивку по переносам, потом переносы каждую строку в массив добавлю
Новая=""; Для к = 1 По СтрДлина(Стр) Цикл Если СтрНайти("0123456789.",Сред(Стр,к,1))<>0 Тогда Новая = Новая+Сред(Стр,к,1); ИначеЕсли СтрНайти(" +-",Сред(Стр,к,1))<>0 тогда Новая = Новая + Символы.ПС; КонецЕсли; КонецЦикла; |
|||
6
mikecool
25.11.15
✎
21:58
|
(5) 60.09 и 09 - это строки, вангую - код бухсчета
|
|||
7
breezee
25.11.15
✎
21:59
|
(6) Конечно. А КО и ДО - кредитовый и дебетовый обороты соответственно. Я это и не скрываю =)
|
|||
8
breezee
25.11.15
✎
22:01
|
Чего-то не хочет мой код добавлять перенос строки
Вбил "КО60.09+ДО09" Он вернул "60.0909" |
|||
9
mikecool
25.11.15
✎
22:01
|
(7) тогда ответь на вопрос - нафейхоа тебе числовые значения?
|
|||
10
mikecool
25.11.15
✎
22:02
|
(8) все правильно тебе вернул твой код, что попросил, то и вернул
|
|||
11
breezee
25.11.15
✎
22:03
|
(10) Дак я же указал что если найдет пробела, "+" или "-" - нужно добавить к строке перенос строки
|
|||
12
breezee
25.11.15
✎
22:05
|
(9) Хочу сравнить коды в тексте с кодами в плане счетов и получить навзание счетов текстовое. План счетов в XML сначала хочу получить массив кодов, поптом искать по этим кодам имена в плане
|
|||
13
breezee
25.11.15
✎
22:07
|
А, все работает. Обработку заново не запустил. Прошу прощения. Наверное тему можно закрывать. Хотя если что не получится - подниму.
|
|||
14
ink-nsk
25.11.15
✎
22:07
|
А Стр у тебя чему равен?
|
|||
15
ink-nsk
25.11.15
✎
22:08
|
(14) Понял
|
|||
16
breezee
25.11.15
✎
22:19
|
Уже не по теме. Сделал все как СП написано.
ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать("C:\1.mxl"); Почему у меня в ТабДок ничего не записано? не горит зеленый карандаш в отладке. |
|||
17
Defender aka LINN
25.11.15
✎
22:23
|
"не горит зеленый карандаш в отладке"
Беда... |
|||
18
breezee
25.11.15
✎
22:24
|
(17) Да уже нашел как обращаться. Странно, обычно к ТЗ по индескам можно обращаться. Сейчас разберусь как искать в нём.
|
|||
19
Artful Den
25.11.15
✎
22:25
|
(4) я по сабжу и теме отвечал, так что возражений не принимаю
|
|||
20
breezee
25.11.15
✎
22:27
|
(19) Да я и не против) Никогда не умел нормально сформулировать тему. Нужно это как-то развивать. Вот только как?..
|
|||
21
Artful Den
25.11.15
✎
22:31
|
(20) Мисту читай. Толкни такую тему в пятницу и сразу на путь истинный встанешь
|
|||
22
Defender aka LINN
25.11.15
✎
22:33
|
(18) К ТЗ по индексу можно обращаться всегда. Если нет - то может таки у тебя и не ТЗ?
|
|||
23
Serg_1960
25.11.15
✎
22:34
|
Может поможет Обрезать код номенклатуры - я там две функции вбросил
|
|||
24
breezee
25.11.15
✎
22:37
|
(21) Спасибо за совет. Вечерком загляну!
(22) Вот так обращаюсь ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать("C:\1.mxl"); //1 - имя //2 - код Для Каждого элТекст из МассивСтрок цикл Для СчСтрок = 1 по ТабДок.ВысотаТаблицы Цикл Текст = ТабДок.Область(СчСтрок,2).Текст; Если Текст = элТекст Тогда Сообщить(Текст +")____("+ ТабДок.Область(СчСтрок,1).Текст); КонецЕсли; (23) Тема закрыта? Не могу там отвечать |
|||
25
breezee
25.11.15
✎
22:40
|
(23) А, блин, прочитал как "может поможете". Спасибо, уже помогли
|
|||
26
breezee
25.11.15
✎
22:55
|
А как найти множественное вхождение?
Для к = 1 По СтрДлина(Стр) Цикл Если СтрНайти(Стр,"ТочтоИщу")>0 Тогда Сообщить(СтрНайти(Стр,"ТочтоИщу")); КонецЕсли; КонецЦикла; Этот код просто мне вернул первое вхождение много раз. А мне нужно чтобы он сообщил номера где входит строка поиска в строку где ищу. |
|||
27
Artful Den
25.11.15
✎
22:58
|
(26) ну тогда тебе рекурсия нужна, имхо
|
|||
28
breezee
25.11.15
✎
22:59
|
(27) Да, сейчас тоже понял, спасибо
|
|||
29
Artful Den
25.11.15
✎
22:59
|
(26) грубо говоря - цикл
нашел первое вхождение - ищи второе и т.д. ферштейн? |
|||
30
breezee
25.11.15
✎
23:00
|
(29) йа йа. Сейчас попробую организовать
|
|||
31
Artful Den
25.11.15
✎
23:01
|
(30) давай, удачи ))
|
|||
32
breezee
25.11.15
✎
23:07
|
Блин. Я ж вроде условие поставил. Чего у меня рекурсия бесконечная?
Вот код к = 1; Пока к<=СтрДлина(Стр) цикл Если СтрНайти(Стр,"ТочтоИщу")>0 Тогда к=СтрНайти(Стр,"ТочтоИщу",,к); Сообщить(СтрНайти(Стр,"ТочтоИщу",,к)); КонецЕсли; КонецЦикла; |
|||
33
breezee
25.11.15
✎
23:08
|
Ой, я не там указал
|
|||
34
breezee
25.11.15
✎
23:10
|
Нет, все равно бесконечная
к = 1; Пока к<=СтрДлина(Стр) цикл Если СтрНайти(Стр,"ТочтоИщу",,к)>0 Тогда к=СтрНайти(Стр,"ТочтоИщу",,к); Сообщить(СтрНайти(Стр,"ТочтоИщу",,к)); КонецЕсли; КонецЦикла; |
|||
35
breezee
25.11.15
✎
23:12
|
Уже лучше. Он хотя бы ищет. Но рекурсия все равно бесконечная. Я конечно могу лепить костыли, на подобие засекания времени. Но, может, подксажите, как без них обойтись? Вот код
к = 1; Пока к<=СтрДлина(Стр) цикл Если СтрНайти(Стр,"ТочтоИщу",,к)>0 Тогда Сообщить(СтрНайти(Стр,"ТочтоИщу",,к)); к=СтрНайти(Стр,"ТочтоИщу",,к)+1; КонецЕсли; КонецЦикла; |
|||
36
breezee
25.11.15
✎
23:15
|
Ладно, всем спасибо. Может завтра что придумаю. Уже спать пора.
|
|||
37
ifso
26.11.15
✎
01:05
|
непотушенный нано чь горящий зеленый карандаш - причина пожара, не?
|
|||
38
Горогуля
26.11.15
✎
05:43
|
бесконечная рекурсия - это такая рекурсия, а не то, что ты понаписал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |