Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 92

Преобразовать каждое слово в строке, удалив из него все предыдущие вхождения последней буквы этого слова

25.05.2017, 14:05. Показов 2033. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, удалив из него все предыдущие вхождения последней буквы этого слова (количество пробелов между словами не изменять).
Ребят помогите сделать задачу... у меня вообще нет идей как ее сделать... я хз как определить что слова разные и как у каждого определить последнюю букву... ооочень нужна помощь
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2017, 14:05
Ответы с готовыми решениями:

Преобразовать каждое слово в строке, удалив из него все вхождения первой буквы этого слова
Дана строка, состоящая из символов латинского алфавита, разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке,...

Преобразовать каждое слово в строке, удалив из него все последующие вхождения первой буквы этого слова
Дана строка, состоящая из латинских слов, разделенных пробелами. Преобразовать каждое слово в строке, удалив из него все последующие...

Преобразовать каждое слово в строке, заменив в нём все предыдущие вхождения последней буквы на точку
Дана строка, состоящая из русских слов, набранных заглавными буквами и разделённых пробелами (одним или несколькими). Преобразовать каждое...

12
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
25.05.2017, 14:09
Цитата Сообщение от BoxHead Посмотреть сообщение
я хз как определить что слова разные
Оператор сравнения ===
Цитата Сообщение от BoxHead Посмотреть сообщение
как у каждого определить последнюю букву
PHP
1
mb_substr('слово', -1);
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 92
25.05.2017, 18:41  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Оператор сравнения ===
окей но я не пойму что с чем сравнивать? ведь же слова должны быть в одной строке, можно код с примером?

Добавлено через 8 минут
Цитата Сообщение от Jodah Посмотреть сообщение
mb_substr('слово', -1);
данная функция не принимает кириллицу
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
25.05.2017, 18:42
Лучший ответ Сообщение было отмечено BoxHead как решение

Решение

BoxHead, я не смог добиться условия "количество пробелов между словами не изменять", а основной код вот:
PHP
1
2
3
4
5
6
7
8
9
10
$str = 'йцуйцуууу фывфывсмиапрввв чсмчсм  нгшнннггг';
$arr = preg_split("~\s+~iu", $str);
$arr_new = array();
foreach($arr as $v){
  $a = mb_substr($v, -1);
  $v = preg_replace("~$a~iu", "", $v);
  $v .= $a;
  $arr_new[] = $v;
}
echo implode(" ", $arr_new);
На выходе
Code
1
йцйцу фыфысмиапрв чсчсм ншнннг
Добавлено через 26 секунд
Цитата Сообщение от BoxHead Посмотреть сообщение
данная функция не принимает кириллицу
принимает. На то она и mb_.
1
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 92
25.05.2017, 18:56  [ТС]
Пифагор, спасибо, но у меня это не работает причина я так подозреваю в кодировке... подскажите как это исправить
и я не зря написал про кириллицу потому что эта функция не захотела выводить такие символы только латинские
Миниатюры
Преобразовать каждое слово в строке, удалив из него все предыдущие вхождения последней буквы этого слова   Преобразовать каждое слово в строке, удалив из него все предыдущие вхождения последней буквы этого слова  
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 92
25.05.2017, 19:02  [ТС]
К стати с латиницей нет никаких ошибок все работает как часы
P.s. извините за 2е сообщение подрядят мне не разрешили спустя 5 мин редактировать
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
25.05.2017, 19:04
Цитата Сообщение от BoxHead Посмотреть сообщение
и я не зря написал про кириллицу потому что эта функция не захотела выводить такие символы только латинские
Вы зря написали про эту функцию. И mb_substr(), и preg_replace() с флагом u прекрасно работают с utf-8.
И вот тому подтверждение.
http://sandbox.onlinephpfuncti... 77e3f9f7e1
Документ точно в UTF-8?
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 92
25.05.2017, 19:15  [ТС]
Цитата Сообщение от Пифагор Посмотреть сообщение
Документ точно в UTF-8?
да точно
Миниатюры
Преобразовать каждое слово в строке, удалив из него все предыдущие вхождения последней буквы этого слова  
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
25.05.2017, 19:29
BoxHead, попробуйте после $str = 'йцуйцуууу фывфывсмиапрввв чсмчсм нгшнннггг'; добавить
PHP
1
$str = mb_convert_encoding($str, 'utf-8', mb_detect_encoding($str));
Если не поможет, по понятия не имею, что у Вас за проблема с кодировкой.
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 92
25.05.2017, 19:35  [ТС]
Цитата Сообщение от Пифагор Посмотреть сообщение
BoxHead, попробуйте после $str = 'йцуйцуууу фывфывсмиапрввв чсмчсм нгшнннггг'; добавить
PHPВыделить код
1
$str = mb_convert_encoding($str, 'utf-8', mb_detect_encoding($str));
Если не поможет, по понятия не имею, что у Вас за проблема с кодировкой.
Спасибо вам за помощь, но у меня в чем то другом проблема... это не помогает... даже в денвере кодировка utf-8
Миниатюры
Преобразовать каждое слово в строке, удалив из него все предыдущие вхождения последней буквы этого слова  
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
25.05.2017, 19:36
BoxHead, если mb_substr не воспринимает кириллицу, значит внутренняя кодировка другая.

Это должно помочь:
PHP
1
mb_internal_encoding("UTF-8");
1
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 92
25.05.2017, 19:44  [ТС]
Ребят, огромное всем спасибо! Все работает как часы!
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
26.05.2017, 10:02
Цитата Сообщение от Пифагор Посмотреть сообщение
я не смог добиться условия "количество пробелов между словами не изменять"
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$str = 'azdfefefeee   fefefefffff ptytytyhyjypppp';
$_ = [];
preg_replace_callback("~([a-z]+\s*)~",function($m) use (&$_){
     $end_ = preg_match("~([a-z])((?=\\s)|$)~",$m[1],$s);
     $_[]  = preg_replace("~([a-z])((?=\\s)|$)~",'$1'.$s[1],str_replace($s[1],'',$m[1]));
},$str);
echo implode("",$_);
    $c = array_map(function($v){ // проверяем кол-пробелов, что они сохранились
        return substr_count($v,' ');
    },$_);
print_r($c);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.05.2017, 10:02
Помогаю со студенческими работами здесь

Преобразовать каждое слово в строке, удалив из него все последующие вхождения первой буквы
Ребят, никак не могу написать данную задачу , буду очень признателен в помощи. Дана строка , состоящая из русских слов, разделенных...

Преобразовать каждое слово в строк, заменив в нем все предыдущие вхождения его последней буквы на символ «.»
Дана строка, состоящая из слов, набранных заглавными бук-вами и разделенных пробелами (одним или несколькими). Преобразо-вать каждое слово...

Преобразовать каждое слово в строке, удалив из него все последующие вхождения
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, удалив из...

Преобразовать каждое слово в строке, удалив из него все вхождения заданного символа
Помогите решить! Дана строка, состоящая из символов латинского алфавита, разделенных пробелами (одним или несколькими). Преобразовать...

Напечатать все слова строки, предварительно удалив из каждого слова все предыдущие вхождения последней буквы
дана последовательность слов разделенных пробелами .Напечатать все слова предварительно удалив из каждого слова все предыдущие вхождения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru