Ваниль JS - инвертировать каждую подстроку на месте внутри строки - PullRequest
0 голосов
/ 11 февраля 2020

Как я могу перевернуть каждую подстроку на месте внутри строки? Например, это моя строка

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

И я хочу превратить ее в:

merol muspi si ylpmis ymmud txet fo eht ...

Я пробовал myString.split(' ').reverse().join(' '));, но это меняет положение подстрок вместо того, чтобы поставить первую слово как последний et c

Ответы [ 3 ]

2 голосов
/ 11 февраля 2020

Если вы хотите простой реверс:

let myString = `Lorem Ipsum is simply dummy text of the printing and typesetting industry.`;

console.log(myString.split(' ').map(word => word.split(``).reverse().join(``)).join(` `))

Но этот подход игнорирует верхний регистр в 1-м слове и точку в конце.

, если вы хотите исправить верхний регистр букв и точка вы можете сделать это:

let myString = `Lorem Ipsum is simply dummy text of the printing and typesetting industry.`;

console.log(myString.split(' ').map(word => word.split(``).reverse().join(``)).join(` `))

console.log(myString.split(' ').map(word => {
    const firstLetterIsUppercase = word.charAt(0) === word.charAt(0).toUpperCase();
    const lastCharacterIsDot = word.charAt(word.length -1 ) === `.`;
    let revertWord = word
        .toLowerCase()
        .split(``)
        .reverse()
        .join(``);
    if (firstLetterIsUppercase) {
     revertWord = revertWord.charAt(0).toUpperCase() + revertWord.slice(1); 
    }

    if (lastCharacterIsDot) {
        revertWord = revertWord.slice(1) + `.`;
    }

    return revertWord;
}).join(` `))

1 голос
/ 11 февраля 2020

Задача

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

Решение

Алгоритм может быть определен следующим образом:

  1. Разделить исходную строку на подстроки.
  2. Перевернуть каждую подстроку
  3. вернуть строку с перевернутыми подстроками, разделенными одним пробелом каждый

Ваш код будет выглядеть примерно так

let str = `Lorem Ipsum is simply dummy text of the printing and typesetting industry.`;

let words = str.split(' '); // get sub srings

words.map(each => each.split('').reverse().join('').toLowerCase()); // each word is now reversed

let rev_str_inplace = words.join(' ');
console.log(rev_str_inplace);
// 'merol muspi si ylpmis ymmud txet fo gnitnirp dna gnittesepyt .yrtsudni'

РЕДАКТИРОВАТЬ

Если вы хотите удалить точку в вашем обращении, вы можете просто изменить паттерн изменения кода следующим образом:

words.map(each => each.split('.').map(c => c.split('').reverse().join('').toLowerCase()))
0 голосов
/ 11 февраля 2020

Вам нужно разделить дважды и присоединиться дважды, чтобы перевернуть каждую букву. Это может помочь.

const str = Lorem Ipsum is simply dummy text of the printing and typesetting industry.
str.split(' ').map(i => i.split('').reverse().join('')).join(' ')
...