8.х Строки. Извлечение с последнего пробела

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем J-F, 21 май 2010.

  1. TopicStarter Overlay
    J-F
    Offline

    J-F Опытный в 1С

    Регистрация:
    13 фев 2009
    Сообщения:
    92
    Симпатии:
    0
    Баллы:
    26
    Привет. В инете хотел порыть инфу по этому вопросу, но что-то толком не нашел.

    Задача такова:Есть строки например
    Фруктовая планета 1л колокольчик
    Фруктовая планета 1л персик
    Фруктовая планета 1л апельсин
    ИЛИ
    Элита 100г соус
    Элита 100г соус острый
    Как мне из строки извлечь с последнего пробела до первого символа. Т.е. результат таков, Фруктовая планета 1л или Элита 100г.
    Чет не могу сообразить. Кому не сложно, подскажите!
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.572
    Симпатии:
    717
    Баллы:
    204
    раскладываешь строку на слова и формируешь результат из полученных слов - в этом случае ты получишь:

    Фруктовая планета 1л
    Элита 100г соус

    "Элита 100г" ты не получишь, потому как это уже не с последнего пробела
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.572
    Симпатии:
    717
    Баллы:
    204
    дополнение:
    в общем случае будет

    Элита 100г
    Элита 100г соус
  4. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Я предлагаю несколько иной вариант - в цикле искать последний пробел (метода проста - используем метод "Найти", ищем пробел, запоминаем значение, отсекаем все символы до него. Повторяем операцию до победного конца (пока в подстроке уже не будет находиться пробел). Эта полученная строка - и есть искомое.
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.572
    Симпатии:
    717
    Баллы:
    204
    ....и получим

    Элита 100г
    Элита 100г соус

    сути не меняет....
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Вот код

    Код:
    стр=Предложение;
    строкаТемп="";
    Пока Найти(стр," ")Цикл
    НомерПоследнегоПробела=Найти(стр," ");
    строкаТемп=строкаТемп+Сред(стр,1,НомерПоследнегоПробела);
    стр=Сред(стр,НомерПоследнегоПробела+1,СтрДлина(стр)-НомерПоследнегоПробела);
    ОбработкаПрерыванияПользователя();
    КонецЦикла;	
    НеобходимоеНаименование=СокрП(строкаТемп);
    Сообщить(НеобходимоеНаименование)
    
    Вот обработка
    Посмотреть вложение 4383

    Вложения:

  7. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Альтернатива
    Код:
    	СтрокаПоСловам = СтрЗаменить(Строка," ",Символы.ПС);
    
    Итог = "";
    Для й = 1  По СтрЧислоСтрок(СтрокаПоСловам)-1 Цикл
    Итог = Итог + " " + СтрПолучитьСтроку(СтрокаПоСловам,й);
    КонецЦикла; 
    Итог = СокрЛП(Итог);
    
    
  8. TopicStarter Overlay
    J-F
    Offline

    J-F Опытный в 1С

    Регистрация:
    13 фев 2009
    Сообщения:
    92
    Симпатии:
    0
    Баллы:
    26
    СПАСИБО БОЛЬШОЕ!!!!!!!!!!!

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