Имя: Пароль:
1C
1С v8
Перебрать строку
0 karpos
 
19.06.14
09:47
Всем привет не подскажите как передрать строку.
Почему я не могу сделать так
Строка = "1234hfkls222"
Для Индекс = 0 По СтрДлинна(Строка)
   Сообщить(Строка[Индекс]);
КонецЦикла

и еще так есть Функция найти(1234hfkls222, "h") она возвращает не сам элемент а его индекс в строке как я понял
1 ДенисЧ
 
19.06.14
09:48
Сообщить(Сред(Строка, Индекс, 1));
2 Wobland
 
19.06.14
09:49
слово "длина" пишется с двумя Н, только когда она очень длинная
3 karpos
 
19.06.14
09:51
это точно
4 karpos
 
19.06.14
09:51
не там не много другая тема
5 karpos
 
19.06.14
09:51
НаборЦифр = "1234567890";
Текст = "Я14:00";

Для Индекс = 0 По СтрДлина(Текст) Цикл
  Результат = Найти(НаборЦифр, Текст[Индекс]);
  Сообщить(Результат);
КонецЦикла;
6 Wobland
 
19.06.14
09:52
(4) следует ли из этого вывод, что там много другая тема?
7 karpos
 
19.06.14
10:01
я хочу перебрать строку Текст
потом Найти(НаборЦифр, СимволВстрокеТекст)
он мне вернет полицию символа в строке набор цифр
потом я через сред() вытаскиваю значение вот
8 Крошка Ру
 
19.06.14
10:01
(0) 1. Функция "Найти" возвращает не индекс, а позицию символа.
2. В цикле будет выход индекса за пределы допустимых значений.
3. Чем тебя не устраивает (1) ?
4. И, да, "передрать строку" - это круто! Может поэтому и не работает?
9 karpos
 
19.06.14
10:03
ребят я тороплюсь извиняюсь за ошибки
10 Wobland
 
19.06.14
10:04
(7) поздравлять или как?
11 Крошка Ру
 
19.06.14
10:08
(7) То есть ты передаешь коду символ, а он возвращает тебе его обратно? Это тебе просто поиграть не с кем?
12 Wobland
 
19.06.14
10:11
(11) это он второй день не может найти первую цифру в строке
13 karpos
 
19.06.14
11:50
НаборЦифр = "1234567890";
Текст = "Я14:00";

Для Индекс = 0 По СтрДлина(Текст) Цикл
     Сообщить(Сред(Строка, Индекс, 1));
КонецЦикла;

теперь он перебирает а если так не могу понять почему не работает

Сред(НаборЦифр, Найти(НаборЦифр, (Сред(Строка, Индекс, 1), 1);
и все это в цикле который выше
14 Wobland
 
19.06.14
11:52
(13) с переменными разберись. то строка, то текст
15 karpos
 
19.06.14
12:08
есть такое просто немного разные версий
16 РенеДекарт
 
19.06.14
12:13
(0)>>она возвращает не сам элемент а его индекс в строке как я понял
странно было бы, если бы передав куда-то символ - ожидать его же получить обратно.
17 dmitn
 
19.06.14
12:18
(2) см. gramota.ru
18 karpos
 
19.06.14
12:24
не смотрите вот тут у меня
Для Индекс = 0 По СтрДлина(Текст) Цикл
     Сообщить(Сред(Строка, Индекс, 1));
КонецЦикла;

перебирается строка я хочу символы в этой строке сравнить  НаборЦифр = "1234567890"; и если есть совпадения пусть он мне вернет
19 Wobland
 
19.06.14
12:24
сравнивай уже коды символов
20 Fragster
 
гуру
19.06.14
12:25
(19) это не очень хорошо
21 Wobland
 
19.06.14
12:25
+(19) НаборЦифр разрывает твой мозг
22 Fish
 
19.06.14
12:26
(18) Ты хочешь проверить, есть ли в твоей строке цифры? Я правильно понял задачу?
23 Ненавижу 1С
 
гуру
19.06.14
12:27
(18) символы в строке 1С вообще-то с 1 начинаются
24 Сергей Д
 
19.06.14
12:28
(7) ПОЛИЦИЮ символа - это круто. :)
Так и не понял, чего надо сделать.
25 hhhh
 
19.06.14
13:30
(24) найти первую цифру в строке
26 karpos
 
19.06.14
14:58
да да я хочу проверить есть в той строке цифры может что то подскажите
27 Wobland
 
19.06.14
15:01
(26) проверить? Найти(стр, "01234567890")>0
28 karpos
 
19.06.14
15:02
не только проверить но вернуть цифры, я хочу отделить буквы и цифры
29 Wobland
 
19.06.14
15:07
(28) ты когда начнёшь соображать и говорить? строку посимвольно перебираешь. в чём затык?
30 katc
 
19.06.14
15:20
"Для Индекс = 0 По СтрДлина(Текст)-1 Цикл"

а то получишьошибку
31 karpos
 
19.06.14
15:27
есть строка вида ВТ14:00, ВТ8:00, Я8:00 я хочу чтоб он она стали вида 14:00, 8:00
32 Wobland
 
19.06.14
15:28
(31) а затык в чём?
33 Fish
 
19.06.14
15:45
(31) Можно так:
Если Найти(Текст,"ВТ") > 0 Тогда
     Текст = СтрЗаменить(Текст,"ВТ","");
ИначеЕсли Найти(Текст,"Я") > 0 Тогда
     Текст = СтрЗаменить(Текст,"Я","");
КонецЕсли;
34 Fish
 
19.06.14
15:46
+(33) И никаких переборов :))
35 Borteg
 
19.06.14
15:51
СтрокаПроверки = СокрЛП(СтрокаПроверки);
    Длина = СтрДлина(СтрокаПроверки);
    
        НужнаяСтрока = "";
        
    Для Ном = 1 По Длина Цикл
        Если  НЕ Найти("0123456789:", Сред(СтрокаПроверки, Ном, 1)) = 0 Тогда
        НужнаяСтрока = НужнаяСтрока+Сред(СтрокаПроверки, Ном, 1);
        КонецЕсли;
    КонецЦикла;
Возврат НужнаяСтрока
36 kosts
 
19.06.14
16:09
(31)

Функция ТолькоЦифры(Знач СтрокаСЦифрамиИСимволами)
    
    ПервыйСимвол = Лев(СтрокаСЦифрамиИСимволами, 1);
    Если ПервыйСимвол = "" Тогда
        Возврат "";
    ИначеЕсли ЭтоЧисло(ПервыйСимвол) Тогда
        Возврат ПервыйСимвол + ТолькоЦифры(Сред(СтрокаСЦифрамиИСимволами, 2));
    Иначе
        Возврат ТолькоЦифры(Сред(СтрокаСЦифрамиИСимволами, 2));
    КонецЕсли;
    
КонецФункции

Текст = "щш56щш6гшнг5нг5нг5нг54574347547547";
Сообщить(Текс + "->" + ТолькоЦифры(Текст), СтатусСообщения.Информация);
Ошибка? Это не ошибка, это системная функция.