Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 31.08.2018
Сообщений: 16
1

Слова в обратном порядке в предложениях

01.03.2019, 16:27. Показов 3383. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Есть задачка, поменять слова в предложениях в обратном порядке при минимальном коде, пока что накидал нечто: https://jsfiddle.net/8txL07mp/

Javascript
1
2
3
4
5
6
7
8
9
10
11
const r = s => {
   return s.toLowerCase().replace(/(\.+)(\"*)(\s|\n)/gm, "$1$2|").split('|').map(item => {
        return item.split(' ').map(word => {
            return word.slice(-1).match(/^[.,:!?]/) ? word.slice(0, -1) : word;
        }).reverse().join(' ');  
   }).map(p => {
        return p.charAt(0).toUpperCase() + p.slice(1) + '.';
   });
}
 
console.log(r('Твой Сокол Тысячелетия грязная посудина. Его нужно помыть. Помой его быстрее, сударь.'));
Только осталась загвозка, есть слова (сочетания слов) типа Сокол тысячелетия, Хан Соло, Люк Скайуокер и т.д. они должны оставаться в этом же сочетании, т.е. Сокол тысячелетия не должен превратиться в тысячелетия Сокол. Как это можно реализовать? Регулярками по окончаниям и корням?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2019, 16:27
Ответы с готовыми решениями:

В тексте расположить в обратном порядке предложения. Слова в предложениях поменять местами(1-2, 3-4)
Помогите написать программу. 2 версии программы написал, но неработоспособны. В тексте расположить...

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

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

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

3
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
01.03.2019, 20:53 2
djonikme,
Цитата Сообщение от djonikme Посмотреть сообщение
Как это можно реализовать?
пробег по словарю например. Задача у Вас конечно..... вероятно учебная. До сих пор не могу придумать, за каким преследовать эту цель.
Решение, что называется "в лоб" - https://codepen.io/qwerty_wasd/pen/moVajV
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const revText = text => {
  dict.forEach(e => text = text.replace(e.replace('_|_', ' '), e));
  return text
    .split`.`
    .map(e => e.trim().split` `.map(el => ~el.indexOf('_') ? el : el.toLowerCase()))
    .map(e => e.reverse().join` `)
    .map(e => e.trim() !== '' ? e.charAt(0).toUpperCase() + e.slice(1) + '.' : e).join` `.replace('_|_',' ');
},
      dict = [
        "Сокол_|_Тысячелетия",
        "Люк_|_Скайуокер",
        "Хан_|_Соло",
      ];
console.log(revText(`Твой Сокол Тысячелетия грязная посудина. Его нужно помыть. Помой его быстрее, сударь.`));
//"Посудина грязная Сокол Тысячелетия твой. Помыть нужно его. Сударь быстрее, его помой. "
1
1 / 1 / 0
Регистрация: 31.08.2018
Сообщений: 16
01.03.2019, 21:21  [ТС] 3
Qwerty_Wasd, блин, забыл про склонения указать

в общем-то эти сочетания словв "Хан Соло", "Сокол тысячелетия" могут склоняться как угодно, в рамках русского языка конечно
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
01.03.2019, 22:38 4
Лучший ответ Сообщение было отмечено djonikme как решение

Решение

djonikme, подправить вариант немного
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const revText = text => {
  dict.forEach(e => text = text.replace(new RegExp(e, "g", "m"), match => match + "_|_").replace(/\_\|\_\s+/gm, "_|_"));
  return text
    .split`.`
    .map(e => e.trim().split` `.map(el => ~el.indexOf('_') ? el : el.toLowerCase()))
    .map(e => e.reverse().join` `)
    .map(e => e.trim() !== '' ? e.charAt(0).toUpperCase() + e.slice(1) + '.' : e)
    .join` `
    .replace('_|_',' ');
},
      dict = [
        "Сокол|Сокол(а|ом|е|у)",
        "Люк|Люк(а|ом|е|у)",
        "Хан|Хан(а|ом|е|у)",
      ];
console.log(revText(`Твой Сокол Тысячелетия грязная посудина. Его нужно помыть. Помой его быстрее, сударь.`));
0
01.03.2019, 22:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2019, 22:38
Помогаю со студенческими работами здесь

Вывести только симметричные слова либо слова, в которых буквы упорядочены в порядке, обратном алфавитному
С консоли вводится текст. Напишите программу, которая будет выводить только те слова, которые...

Слова в обратном порядке
Здравствуйте,пишу первую прогу на Java,создал файл и считываю его,как проще всего переписать...

слова в обратном порядке
дана строка, записать все слова этой строки в обратном порядке

Слова в обратном порядке
Кто-нибудь может указать на то, как применить обратный порядок к словам, а не к каждому символу? К...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru