|
прибавка к числу | ☑ | ||
---|---|---|---|---|
0
Flempy
15.11.22
✎
13:00
|
Задача следующая: дана строка, в которой находятся либо только числа, либо символы и числа. Например "AG-239", какую функцию можно написать, чтобы прибавить к этому номеру единицу, чтобы получилось "AG-240"
|
|||
1
rudnitskij
15.11.22
✎
13:05
|
(0) вычленяете из строки часть с цифрами, преобразуете в число, прибавляете к нему единицу и собираете строку обратно
|
|||
2
vbus
15.11.22
✎
13:08
|
данную строку проверить там находятся числа или символы и числа, если только числа, то превратить строку в число прибавить один, превратить число в строку, записать. если символы и числа выбрать только числа, превратить строку в число прибавить один, превратить число в строку, записать.
|
|||
3
ejikbeznojek
15.11.22
✎
13:09
|
Регулярное выражение написать. Ну или если не осилишь, то
ЧислоСтрокой=""; Для сч=1 по стрдлинна(ТвояСтрока) цикл Попытка ЧислоСтрокой=ЧислоСтрокой+строка(Число(сред(ТвояСТрока,сч,1))); исключение продолжить конеццикла если числострокой<>"" тогда НовоечислоСтрокой=строка(число(числоСтрокой)+1); СтрЗаменить(ТвояСтрока,ЧислоСтрокой,НовоечислоСтрокой); |
|||
4
Flempy
15.11.22
✎
13:10
|
(1) Так и делал, но не понятно что делать с "Тире", при выборке он читает как будто это отрицательное число и соответственно будет не "AG-240", а "AG-238"
|
|||
5
Kassern
15.11.22
✎
13:10
|
(0) А может быть такой пример - 24V5j4k? Если да, то какой должен быть результат?
|
|||
6
Kassern
15.11.22
✎
13:12
|
(4) Проходите строку посимвольно и проверяете, цифра это, или нет. Если цифра то записываете в строку. В конце эту строку преобразуете в число и добавляете 1.
Проверять на цифру можно на вхождение в массив, который состоит из цифр, или через попытку. |
|||
7
Serg_1960
15.11.22
✎
13:13
|
[подсказка] вопрос автора - на тему автонумерации с использованием префикса. Нет смысла лисапед изобретать.
|
|||
8
Flempy
15.11.22
✎
13:14
|
(5) скорее всего нет, только на конце цифры
(6) Попробую так сделать, спасибо |
|||
9
Галахад
гуру
15.11.22
✎
13:15
|
:-)
ААА = СтрСоединить(СтрРазделить(Стр, СтрСоединить(СтрРазделить(Стр, "0123456789"), "")), ""); |
|||
10
Ryzeman
15.11.22
✎
13:17
|
(8) Легко гуглится, хотя и самому написать не сложно:
Функция ПолучитьЧисловуюСтроку(Строка) Экспорт Результат = Строка; Индекс = 1; ДоступныеСимволы = "0123456789"; Пока Индекс <= СтрДлина(Результат) Цикл ПроверяемыйСимвол = Сред(Результат, Индекс, 1); Если СтрНайти(ДоступныеСимволы, ПроверяемыйСимвол) = 0 Тогда Результат = СтрЗаменить(Результат, ПроверяемыйСимвол, ""); Продолжить; КонецЕсли; Индекс = Индекс + 1; КонецЦикла; Возврат Результат; КонецФункции Запоминаешь эту строку, преобразуешь в число, прибавляешь 1, назад в строку и через СтрЗаменить меняешь. Но это не будет работать если у тебя что то вроде 245xz51 |
|||
11
rudnitskij
15.11.22
✎
13:19
|
(4) тире это разве число? Что тут может быть непонятного?
|
|||
12
Ryzeman
15.11.22
✎
13:20
|
(11) Может он имеет ввиду что тире минусом может быть?)
|
|||
13
Flempy
15.11.22
✎
13:21
|
(12) именно
|
|||
14
Ryzeman
15.11.22
✎
13:23
|
(13) Ну у тебя же не может быть отрицательных чисел, если речь о какой то последовательной нумерации? Как строку от всего кроме цифр я выше скинул
|
|||
15
Flempy
15.11.22
✎
13:29
|
(14) Я просто немного по-другому отбирал,
ЦелеваяСтрока = ""; СерияПродукции = ВыборкаМаркировки.Серия; КоличествоСимволов = СтрДлина(СерияПродукции); Пока КоличествоСимволов > 0 Цикл Попытка ЧисловоеЗначениеСерии = Число(СерияПродукции); Прервать; Исключение ЦелеваяСтрока = ЦелеваяСтрока + Лев(СерияПродукции,1); Сообщить(ЦелеваяСтрока); СерияПродукции = Сред(СерияПродукции,2,КоличествоСимволов); КоличествоСимволов = СтрДлина(СерияПродукции); КонецПопытки; КонецЦикла; ИтоговаяСтрока = ЦелеваяСтрока + Строка(ЧисловоеЗначениеСерии); |
|||
16
Flempy
15.11.22
✎
13:31
|
(15) Т.е. я уменьшал строку слева по одному символу и проверял, являлось ли оно числом, затем прибавлял единицу и сливал со строкой, которую отсеивал вначале
|
|||
17
Kassern
15.11.22
✎
13:33
|
(16) забавно)
Храните числовой номер серии и не парьтесь в дальнейшем) |
|||
18
Serg_1960
15.11.22
✎
13:34
|
Игры разума :)
Если строка автора имеет вид "XXX-NNN", где "X" - произвольные символы, "N" - произвольные цифры, то: СтрЗаменить(Лев(СтрНом,Найти(СтрНом,"-")-1)+"-"+(1+Прав(СтрНом,СтрДлина(СтрНом)-Найти(СтрНом,"-"))),Символы.НПП,""); |
|||
19
Serg_1960
15.11.22
✎
13:35
|
*(18) дополнение ведущими нулями - не заказывали :)
|
|||
20
Vakhrin
15.11.22
✎
13:38
|
Я не понял, а где реакция на (9)?! )
|
|||
21
Ryzeman
15.11.22
✎
13:39
|
(16) Это как отрывать муравью по 1 лапке и проверять сможет ли он дальше бежать или нет... Ужас)
|
|||
22
Serg_1960
15.11.22
✎
13:39
|
(20) Вам аплодисменты или крики "Браво, брависимо"?
|
|||
23
Vakhrin
15.11.22
✎
13:50
|
(22) достаточно глубокомысленного прищура... не увидел его просто, простите
|
|||
24
Ryzeman
15.11.22
✎
13:59
|
(20) На самом деле просто лень прикидывать какие там могут быть ошибки и подводные камни. Если их нет, то модно, молодёжно, неплохо)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |