|
Цикл посимвольно или как найти ближайшую к началу цифру? | ☑ | ||
---|---|---|---|---|
0
Guerro
13.03.19
✎
16:47
|
Есть задача имея код например: "ГС230.150" или "ГС.230-150", преобразоваться его в например в "ГС133" или "ГС330". Нашел только как до точки дойти и обрезать правую часть и дописать свой код. А вот если не точка встречается, а например цыфра, как от нее отрезать. букв в начале не всегда 2, может быть и больше и меньше, но хоть одна всегда есть.
|
|||
1
Guerro
13.03.19
✎
16:50
|
https://helpf.pro/faq/view/1855.html - не помогло
|
|||
2
RomanYS
13.03.19
✎
16:53
|
Если Зн = "ГС230.150" Тогда
Возврат "ГС133" КонецЕсли; Или там более глубокая логика? |
|||
3
Sapiens_bru
13.03.19
✎
16:54
|
"А вот если не точка встречается, а например цыфра"
То что? ГС1234 должно превращаться в ГС123 ? |
|||
4
Guerro
13.03.19
✎
16:56
|
(2) что за тупое условие? Он не должен тупо заменять значения, а хавать первые буквы кода
|
|||
5
Homer
13.03.19
✎
16:56
|
Мало данных, надо ТЗ.
А так перебор по порядку символов (с лева на право). Находим число. Далее надо ТЗ |
|||
6
Tatitutu
13.03.19
✎
16:57
|
(0) конечная цель какая ?
|
|||
7
бегинер
13.03.19
✎
16:58
|
если всегда брать первые три цифры и они всегда есть и идут подряд, то ищи позицию первого символа который цифра и потом бери подстроку начиная с позиции первой найденной цифры длинной 3 символа, потом бери левую часть ( до цифры первой) и из нее заменой удали все точки, запятые, тире и прочие символы мусор которые могут встречаться
|
|||
8
Guerro
13.03.19
✎
16:58
|
(6) Взять первые буквы взятого кода и добавить к ним другие цыфры
|
|||
9
бегинер
13.03.19
✎
16:58
|
(2) улыбнуло :)
|
|||
10
Guerro
13.03.19
✎
16:58
|
буквы всегда вначале
|
|||
11
Guerro
13.03.19
✎
16:59
|
(7) буквы разные, длина разная, вы вообще вопрос читали?
|
|||
12
Guerro
13.03.19
✎
16:59
|
буквы идут подряд
|
|||
13
Homer
13.03.19
✎
16:59
|
(4) судя по претензиям, нам предлагают сделать код
|
|||
14
Вафель
13.03.19
✎
17:00
|
цикл по символам - если цифра, то добавляй к "текущему слову", если нет, то новое слово
|
|||
15
Homer
13.03.19
✎
17:00
|
я за 10 тыс руб готов.
|
|||
16
бегинер
13.03.19
✎
17:00
|
(11) да читал, мой алгоритм находит первые подряд идущие три цифры и любое кол-во букв в начале кода
|
|||
17
Guerro
13.03.19
✎
17:00
|
Могут идти нужные нам буквы, потом цыфры, потом буквы, буквы, которые после цифр тоже не нужны
|
|||
18
Guerro
13.03.19
✎
17:01
|
(13) нет, какой цикл ищет первую попавшуюся цыфру
|
|||
19
Guerro
13.03.19
✎
17:02
|
(16) может и одна цифра идти
|
|||
20
бегинер
13.03.19
✎
17:02
|
(18) обычный цикл по каждому символу строковой переменной, в котором текущий символ цикла проверяешь на принадлежность к цифре
|
|||
21
Guerro
13.03.19
✎
17:03
|
Сорян за цЫфра, теперь буду писать цИфра
|
|||
22
Guerro
13.03.19
✎
17:03
|
(20) я не нашел цикл "по каждому символу строковой переменной"
|
|||
23
Guerro
13.03.19
✎
17:03
|
(20) поэтому и сюда написал
|
|||
24
RomanYS
13.03.19
✎
17:04
|
(4) Как может "ГС230.150" превратиться в "ГС133" твоем примере?
|
|||
25
бегинер
13.03.19
✎
17:04
|
(22) пока цикл как ты до точки дошел, ы же проверял что это точка? так же проверяй на цифру
|
|||
26
Sapiens_bru
13.03.19
✎
17:04
|
Плохо искал.
СтрРазделить("ТТ105*810","1234567890")[0] = "ТТ" |
|||
27
Guerro
13.03.19
✎
17:06
|
(24) Цикл обходит сначала по одному символу строковой переменной, как только натыкается на цифру, то останавливается и делает Лев("Моя строковая переменная", номер на которой останвоился)
|
|||
28
Homer
13.03.19
✎
17:06
|
(24) ну тут все очевидно (2)
|
|||
29
Guerro
13.03.19
✎
17:06
|
(25) очень просто:
Точка = Найти(Код, "."); Партия = Лев(Код, Точка); |
|||
30
Guerro
13.03.19
✎
17:07
|
(26) большое спасибо, это все что я искал. Вопрос был примитивный, а остальные дял себя замудрили
|
|||
31
RomanYS
13.03.19
✎
17:09
|
(26) вообще
СтрРазделить("ТТ105*810","1234567890")[0] = "ТТ105*810" |
|||
32
RomanYS
13.03.19
✎
17:10
|
(28) Так это я написал, вариант был назван тупым)
|
|||
33
Sapiens_bru
13.03.19
✎
17:10
|
(31) У вас там какой-то свой 1С.
|
|||
34
Timon1405
13.03.19
✎
17:15
|
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = Истина; RegExp.Global = Ложь; RegExp.MultiLine = Ложь; RegExp.Pattern = "([а-я]+).+"; СтрокаВход = "ГС230пп.150"; СтрокаЗамены = "133"; СтрокаВыход = RegExp.Replace(СтрокаВход,"$1")+СтрокаЗамены; |
|||
35
бегинер
13.03.19
✎
17:16
|
Если Найти("0123456789",тек_символ) > 0 тогда это_число=истина
|
|||
36
RomanYS
13.03.19
✎
17:18
|
(33) Это иp табло ОФ 8.3.9.2170
|
|||
37
Guerro
13.03.19
✎
17:18
|
(34) не люблю подобное использовать в своем коде. Я про VBS
|
|||
38
Guerro
13.03.19
✎
17:19
|
(31) Вот решение, забейте.
|
|||
39
Скиурус
13.03.19
✎
17:33
|
(35) Как по мне
Если Найти("0123456789",тек_символ) > 0 тогда это_число=истина отвратительно. Нужно
Если тек_символ > "0" и тек_символ < "9" тогда это_число=истина |
|||
40
Вафель
13.03.19
✎
17:36
|
(39) чем это лучше?
|
|||
41
Вафель
13.03.19
✎
17:36
|
может тогда через попытку Число(Строка) ?
|
|||
42
бегинер
13.03.19
✎
17:39
|
(39) как можно сравнивать мой рабочий код с нерабочим :) 0 и 9 в вашем коде не пройдут проверку...
|
|||
43
repin_mike
13.03.19
✎
17:50
|
Ответ = "";
ПравильныеСимволы = "ЙЦУКЕЁНйцукеён"; Для Сч = 1 по СтрДлина(Строка) Цикл ТекСимв = Сред(Строка, Сч, 1); Если Найти(ПравильныеСимволы, ТекСимв) > 0 Тогда Ответ = Ответ + ТекСимв; КонецЕсли; КонецЦикла; Возврат Ответ; |
|||
44
Сияющий в темноте
13.03.19
✎
21:15
|
читаем посимвольно сначала до первой цифры,получаем буквенный префикс,далее к нему лепим наши цифры?
|
|||
45
Скиурус
13.03.19
✎
23:33
|
(40) Ну теоретически это может быстрее работать. Ну и, повторяюсь, вкусовщина, но выглядит логичнее. И нет, через Попытку тоже как-то не так смотрится.
(42) Уел :( Вот, возьми, сам поставишь на место == |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |