|
Как получить номер позиции 30-го символа "&" в строке. | ☑ | ||
---|---|---|---|---|
0
Галахад
гуру
29.03.13
✎
09:07
|
Покрасивее.
|
|||
1
НафНаф
29.03.13
✎
09:10
|
Стр = ИсходнаяСтрока;
Для й=1 по 30 Цикл Номер = Найти(Стр,"&"); Стр = Сред(Стр,Номер+1); КонецЦикла; Возврат Номер; |
|||
2
Ursus maritimus
29.03.13
✎
09:13
|
(1) Некрасиво. Знаки равно нужно выравнивать.
|
|||
3
НафНаф
29.03.13
✎
09:14
|
(2) учитывая, что я писал прямо в браузере - мне пох
|
|||
4
Lama12
29.03.13
✎
09:15
|
(0) Ищешь первый. Прибавляешь 29.
|
|||
5
Зойч
29.03.13
✎
09:15
|
ответ 30
|
|||
6
sda553
29.03.13
✎
09:16
|
Стр = СтрЗаменить(Стр,"&",Символы.ПС);
НоваяСтрочка = СтрПолучитьСтроку(Стр, 30); как то так примерно |
|||
7
Лефмихалыч
29.03.13
✎
09:18
|
VBScript.Regexp::match
|
|||
8
Галахад
гуру
29.03.13
✎
09:18
|
(1) Спасибо.
(4) :-) (6) И? Где номер позиции? |
|||
9
sda553
29.03.13
✎
09:20
|
(8) Пускай программисты делают номер позиции, я лишь идеи даю
|
|||
10
NWsFF
29.03.13
✎
09:20
|
в (1) никак номер 30-го символа в исходной строке
|
|||
11
sda553
29.03.13
✎
09:21
|
(8) Заблы добавить, но я телепат и чую, что тебе не номер позиции нужен, а кусок строки, который ты хочешь зная номер выкусить. Я просто уже дальше пошел
|
|||
12
kosts
29.03.13
✎
09:24
|
Детский сад
Цикл к по количествосимволов в строке Если Сред(Исходная Строка, номер позиции, 1) = нужный символ Тогда Счетчик = Счетчик + 1 Если Счетчик = 30 Прервать Конец если Конец если Конец цикла |
|||
13
Эмбеддер
29.03.13
✎
09:28
|
(12) я бы тоже такой код написал, но (6) действительно крут!
|
|||
14
kosts
29.03.13
✎
09:32
|
(13) При условии, что в строке нет разделителей строк. Но об этом в (0) ничего не говориться...
|
|||
15
kosts
29.03.13
✎
09:35
|
Плохо, что в платформе нет таких встроенных функций.
Иногда нужны, но приходится огород городить. В т.ч. в запросах... |
|||
16
Галахад
гуру
29.03.13
✎
09:35
|
(11) Не. Ее не нужно выкусывать, а изменить. Как?
|
|||
17
kosts
29.03.13
✎
09:37
|
(16) К 16 посту выяснили, что на самом деле нужно было...
|
|||
18
НафНаф
29.03.13
✎
09:40
|
в (1) тупанул, там суммировать еще надо
|
|||
19
Эмбеддер
29.03.13
✎
09:45
|
(15) на самом деле если нам надо найти 30-й символ &, то наверняка надо найти и с 1-го по 29-й и также их обработать как 30-й, поэтому такая функция поиска вряд ли нужна
|
|||
20
МихаилМ
29.03.13
✎
09:48
|
СтрЧислоВхождений()
и метод вилки |
|||
21
NWsFF
29.03.13
✎
09:51
|
Самый красивый вариант имхо в (12) чем понятнее тем красивее.
|
|||
22
МихаилМ
29.03.13
✎
09:55
|
(21)
к сожалению 1с8.(0..2) очень медленно работает со стороками. так что посимвольный разбор - сомнительная красота. |
|||
23
Serg_1960
29.03.13
✎
10:08
|
Ммм.. если мы гворим об N-вхождении, то желательно убедиться что оно есть. Намекаю на СтрЧислоВхождений()
|
|||
24
Эмбеддер
29.03.13
✎
10:19
|
(23) больше проверок - больше ошибок, сложнее код. зачем это надо, если мы отловим эту ситуацию и без дополнительных проверок.
да, предварительная проверка ускорит выполнение, когда условие не выполнится, и наоборот |
|||
25
НЕА123
29.03.13
✎
10:26
|
(22)
пятница. плагиат (12) Если КодСимвола(Исходная Строка, номер позиции, 1) = нужныйКодсимвола Тогда Счетчик = Счетчик + 1 Если Счетчик = 30 Прервать Конец если Конец если Конец цикла плагиат (6) Стр = СтрЗаменить(Стр,"&",Символы.ПС); НомерПозиции = 30; Для й=1 по 30 Цикл НомерПозиции = НомерПозиции + СтрДлина(СтрПолучитьСтроку(Стр, 30)); Возврат Номер; |
|||
26
НЕА123
29.03.13
✎
10:27
|
* НомерПозиции = НомерПозиции + СтрДлина(СтрПолучитьСтроку(Стр, й));
|
|||
27
Галахад
гуру
29.03.13
✎
10:28
|
(26) А символы.ПС кто считать будет?
|
|||
28
НЕА123
29.03.13
✎
10:43
|
(27)
НомерПозиции = 30; |
|||
29
Галахад
гуру
29.03.13
✎
10:45
|
(28) Классно. Решение в лоб. :-)
|
|||
30
Serginio1
29.03.13
✎
11:55
|
Функция НайтиВПодстроке(Стр,Поз1,ИскомыйСимвол)
поз=Найти(Стр,ИскомыйСимвол); Если поз=0 Тогда возврат ложь КонецЕсли; поз1=поз1+поз; Стр=Сред(Стр,поз+1); возврат Истина КонецФункции рез=0; Для сч=1 по 30 Цикл Если не НайтиВПодстроке(Стр,рез,ИскомыйСимвол) Тогда прервать; КонецЕсли; КонецЦикла; Не проверял но где то так. |
|||
31
Serginio1
29.03.13
✎
13:51
|
рез=0 нужно установить если Число вхождений меньше
Если не НайтиВПодстроке(Стр,рез,ИскомыйСимвол) Тогда рез=0; прервать; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |