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

Как изменить порядок символов в строке?

01.12.2018, 16:04. Показов 3936. Ответов 4
Метки нет (Все метки)

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

Например:

PHP
1
2
3
$result = RevertMarks("Привет! Как дела?");
 
echo $result; // Привет? Как дела!
Использовала mb_stripos, нашла все вхождения символов в строку, записала их в массив, сделала array_reverse.

А обратно их вставить не могу
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2018, 16:04
Ответы с готовыми решениями:

Строка: Изменить порядок символов в строке на обратный
Напишите программу, которая изменяет порядок символов в строке на обратный. Использование функции strlen() из библиотеки string.c...

Изменить порядок следования символов в строке на обратный
Напишите программу, которая изменяет порядок символов в строке на обратный. Использование функции strlen() из библиотеки string.c...

В строке символов изменить на обратный порядок следования цепочек , составленных из малых русских букв
Как реализовать? В указанной строке символов изменить на обратный порядок следования цепочек , составленных из малых русских букв. ...

4
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
01.12.2018, 16:49
Цитата Сообщение от BornInJuly Посмотреть сообщение
записала их в массив,
значит и ключи известны? раз так, то вместо символа в строке записывайте ключ массива, и выводите символы по ключам массива (после реверса).
0
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
01.12.2018, 18:58
А если в строке 17 знаков, куда им меняться?
0
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
02.12.2018, 16:42
Лучший ответ Сообщение было отмечено BornInJuly как решение

Решение

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function reversePunctuations($str) {
        
    $punctsPattern = '/[.!?\-,;:]/i';
    $matches = [];
    
    $strTmp = preg_replace_callback(
        $punctsPattern, 
        function ($m) use (&$matches) {
            $matches[] = $m[0];
            return '#';
        }, 
        $str
    );
    
    return preg_replace_callback(
        '/#/i', 
        function ($m) use (&$matches) {return array_pop($matches);}, 
        $strTmp
    );
 
}
 
echo reversePunctuations("Привет! Как дела?");
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
05.12.2018, 14:45
BornInJuly, разбиваете строку по шаблону на массив слов и символов по отдельности. Массив символов "переворачиваете", и в цикле собираете новую результирующую строку:

PHP
1
2
3
4
5
6
7
8
9
10
$str = 'Привет! Как дела?';
 
$marks = array_reverse(preg_split('~[^[:punct:]]+~', $str, -1, 1));
$result = '';
 
foreach (preg_split('~[[:punct:]]+~', $str, -1, 1) as $k => $word) {
    $result .= $word . $marks[$k];
}
 
echo $result;
Результат:
HTML5
1
Привет? Как дела!

Не по теме:

Написал для stackoverflow, и вспомнил, что видел эту задачу на этом форуме )



Добавлено через 19 минут
В седьмую строку ещё понадобится добавить условие ($marks[$k] ?? ''):
PHP
1
$result .= $word . ($marks[$k] ?? '');
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.12.2018, 14:45
Помогаю со студенческими работами здесь

Изменить порядок букв в строке
Здравствуйте . Есть такая задача: дана строка с восьми слов , в словах с парным номером нужно изменить порядок букв на противоположный . ...

Изменить порядок слов в строке
Коллеги, добрый день. Имеется csv файл с содержанием: "Name","TargetOU" "qqq","test-ou1/test-ou2/test-ou3" ...

Изменить порядок следования цифр в строке
Строка состоит только из цифр, нужно сделать(без перестановки) так, чтобы сначала шли двойки, потом нули, потом единицы Например строка...

Изменить порядок слов в строке на обратный
Вводится строка, состоящая из слов, разделенных пробелами. Следует заменить ее на строку, в которой слова идут в обратном порядке...

Поменять порядок символов в строке
#include "stdafx.h" #include <stdio.h> #include <string.h> #include <conio.h> #include <locale.h> void funct(char*); void...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru