7.7 Найти символ в строке

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем punkyklan, 5 июн 2013.

  1. TopicStarter Overlay
    punkyklan
    Offline

    punkyklan Опытный в 1С

    Регистрация:
    12 дек 2012
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    Мне необходимо найти символ в строке "/" и прочитать строку до конца начиная с этого символа, если есть второй такой символ, то мне необходимо прочитать то что написано между ними, как мне это сделать?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Код:
    НашаСтрока="Тест1/Тест2/Тест31";
    Спис.ИзСтрокиСРазделителями(СтрЗаменить(НашаСтрока,"/",","));
    
    Получили объект СписокЗначений. Три Строки

    Как получить вторую - думаю понятно
  3. TopicStarter Overlay
    punkyklan
    Offline

    punkyklan Опытный в 1С

    Регистрация:
    12 дек 2012
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    Можно немного подробней, я не понимаю просто что выполняется данным кодом, что такое спис?
    Если я правильно понимаю, то вы заменили символ / на , или вы прочитали запись до него?
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Ну если вам лень прочитать СП....
    ИзСтрокиСРазделителями - Заполняет СписокЗначений значениями из переданной в качестве параметра строки, содержащей разделенные запятыми значения: числа и строки в двойных кавычках.
    СтрЗаменить - Возвращает строку, полученную из строки поиска заменой всех вхождений шаблона поиска строкой замены.


    Полный код выглядит так...

    Код:
    Спис=СоздатьОбъект("СписокЗначений");
    НашаСтрока="Тест1/Тест2/Тест31";
    Спис.ИзСтрокиСРазделителями(СтрЗаменить(НашаСтрока,"/",","));
    Если Спис.РазмерСписка()>1 Тогда
    Сообщить(Спис.ПолучитьЗначение(2));//то что нужно
    Иначе
    Сообщить("Упсссссс"); //не нашли
    КонецЕсли;
    
  5. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    Здравствуйте.
    Может мой вариант покажется Вам более понятным?

    Код:
    НашаСтрока="Тест1/Тест2/Тест3";
    Слеш=0;
    Пока Найти(НашаСтрока,"/")>0 Цикл
    Позиция=Найти(НашаСтрока,"/");
    Слеш=Слеш+1;
    Если Слеш=1 Тогда
    НашаСтрока=Прав(НашаСтрока,СтрДлина(НашаСтрока)-Позиция);
    Иначе
    НашаСтрока=Лев(НашаСтрока, Позиция-1);
    КонецЕсли;
    КонецЦикла;
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Громоздко как-то если честно))) К тому же нужно еще проверять было ли вхождение (что-то вообще нашлось)....
  7. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    Конечно не так красиво, как у Вас.
    Если слеш не найден, то цикл не будет работать. Это и не требовалось.
  8. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    Ой! А вариант со списком значений точно работает?
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Извиняюсь... Для текста совсем забыл про кавычки...
    Правильный код такой
    Код:
    Спис=СоздатьОбъект("СписокЗначений");
    НашаСтрока="Тест1/Тест2/Тест31";
    Спис.ИзСтрокиСРазделителями(""""+СтрЗаменить(НашаСтрока,"/",""",""")+"""");
    Если Спис.РазмерСписка()>1 Тогда	
    Сообщить(Спис.ПолучитьЗначение(2));//то что нужно
    Иначе
    Сообщить("Упсссссс"); //не нашли
    КонецЕсли;
    
  11. TopicStarter Overlay
    punkyklan
    Offline

    punkyklan Опытный в 1С

    Регистрация:
    12 дек 2012
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    Спасибо, все работает

Поделиться этой страницей