Нужна подсказка для строкового метода - PullRequest
0 голосов
/ 17 июня 2020

Я делаю подготовительный курс к буткемпу - да, сюда! - и я застрял в этом конкретном упражнении по поводу Строковых методов

Мне нужно манипулировать этой исходной строкой ' supercalifragilisticexpialidocious ' и получить следующую версию: docious-ali-expi-isti c -fragil-cali-rupus

Я пробовал это:

var bigWord = 'supercalifragilisticexpialidocious'; 
var newWord1 = bigWord.slice(27);
var newWord2 = bigWord.slice(24,27);
var newWord3 = bigWord.slice(20,24);
var newWord4 = bigWord.slice(15,20);
var newWord5 = bigWord.slice(9,15); 
var newWord6 = bigWord.slice(9,5);
var newWord7 = bigWord.slice(5,9);
var newWord8 = bigWord.charAt(4);
var newWord9 = bigWord.slice(1,2); 
var newWord10 = bigWord.charAt(2);
var newWord11 = bigWord.slice(32);

console.log (newWord1, newWord2, newWord3, newWord4, newWord5, newWord6, newWord7, newWord8, newWord9, newWord10, newWord11);

Есть ли у кого-нибудь подсказка для меня? Кто-нибудь может мне помочь? Ура!

Ответы [ 4 ]

0 голосов
/ 19 июня 2020
var bigWord = 'supercalifragilisticexpialidocious'; 
var newWord1 = bigWord.slice(27);
var newWord2 = bigWord.slice(24,27);
var newWord3 = bigWord.slice(20,24);
var newWord4 = bigWord.slice(15,20);
var newWord5 = bigWord.slice(9,15);
var newWord6 = bigWord.slice(5,9);
var newWord7 = bigWord.charAt(4) + bigWord.slice(1,2) + bigWord.charAt(2) + bigWord.slice(32);

var newBigWord =(newWord1+'-'+newWord2+'-'+newWord3+'-'+newWord4+'-'+newWord5+'-'+newWord6+'-'+newWord7);

console.log(newBigWord);
0 голосов
/ 17 июня 2020

Я бы go для некоторых вещей Regexep

const original = 'supercalifragilisticexpialidocious';
const expected = 'docious-ali-expi-istic-fragil-cali-repus';

// the most common way to reverse a string is to explode it to an array and use the standard reverse method and then joining it back again as a string
function reverseString(str) {
    return str.split("").reverse().join("");
}

// the replacer method do the job of concataining words joining them by dash and call the reverse method for the last matched word.
function replacer(match, p1, p2, p3, p4, p5, p6, p7, offset, string) {
  return [p7, p6, p5, p4, p3, p2, reverseString(p1)].join('-');
}

// pick the words by block of letters
const actual = original.replace(/(\w{5})(\w{4})(\w{6})(\w{5})(\w{4})(\w{3})(\w{7})/, replacer);

console.log(expected === actual);
0 голосов
/ 17 июня 2020

Я попытался сделать для вас простой пример, сохраняя при этом динамичность c, чтобы вы могли учиться. Предполагая, что вы хотите, чтобы слова были нарезаны от конца строки до ее начала, а затем снова объединены вместе в обратном порядке с -, тогда все, что вам нужно «жестко запрограммировать», - это длина каждого слова для нарезки (от начала до конец), а затем l oop через это и вырежьте свои слова. Итак, если вы хотите превратить supercalifragilisticexpialidocious в docious-ali-expi-istic-fragil-cali-super, вы можете сделать это:

var bigWord = 'supercalifragilisticexpialidocious';
var slices = [5, 4, 6, 5, 4, 3, 7];
var words = [], lastSlice = 0;
slices.forEach(slice => {
    words.push(bigWord.slice(lastSlice, lastSlice + slice))
    lastSlice += slice;
});
// Reverse the sliced words and join them back together with -
words = words.reverse().join('-');
console.log(words); // outputs docious-ali-expi-istic-fragil-cali-super
0 голосов
/ 17 июня 2020

Вот работающий фрагмент кода. Однако он не отвечает на ваш вопрос:

var bigWord = 'supercalifragilisticexpialidocious'; 
var newWord1 = bigWord.slice(27);
var newWord2 = bigWord.slice(24,27);
var newWord3 = bigWord.slice(20,24);
var newWord4 = bigWord.slice(15,20);
var newWord5 = bigWord.slice(9,15); 
var newWord6 = bigWord.slice(5,9);
var newWord7 = bigWord.charAt(4) + bigWord.slice(1,2) + bigWord.charAt(2) + bigWord.slice(32);
console.log([newWord1,newWord2,newWord3,newWord4,newWord5,newWord6,newWord7].join("-"));

Проблемы:

  • вы использовали .slice (9,5) для слова 6, что неверно, потому что 9 позади 5 и, следовательно, newWord6 не дали правильного результата, но "" (пустая строка)
  • вы не сложили слово 7 в целое, а распечатали его элементы отдельно
  • вы должны напечатайте минус-символы между
    • , поставив + "-" + между всеми переменными
    • или добавив массив, как у меня, и используйте оператор join ()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...