Замените гласные в строке их индексом в строке, используя JavaScript - PullRequest
0 голосов
/ 29 ноября 2018

Мне нужно заменить каждый гласный в строке с индексом + 1 в строке.(Имя функции = vowel2index)
Пример вывода:

 vowel2index('this is my string') == 'th3s 6s my str15ng'

Надеюсь, этот пример показывает, что я пытаюсь сделать.Я попытался использовать метод замены следующим образом:

  str.replace(/[aeiou]/gi, str.indexOf(/[aeiou]/gi);

, но это не приблизилось к решению проблемы.Я также попробовал приведенный ниже код, но я не мог понять, куда идти из оператора IF (я еще не использовал гласные массива):

 function vowel2index(str) {
 let vowels = ["a", "e", "i", "o", "u"];
 let arr = [];
 for(i = 0; i < str.length; i++){
     if (str[i] === /[aeiou]/gi) {
        arr.push(str.replace(str[i], indexOf(str[i])+1));
     }

Любая помощь приветствуется.Как к сведению, эта проблема из кодов войны.

Ответы [ 4 ]

0 голосов
/ 29 ноября 2018

Вы можете попробовать этот помощник.

const vowel2index = str => str.replace(/[aeiou]/gi, (_, offset) => offset+1) 


console.log(vowel2index('this is my string'))

PS: Он очистит все контрольные примеры, потому что я уже решил эту ката.(Приятно видеть кого-то из Codewars ♡) ?

0 голосов
/ 29 ноября 2018

Ты почти у цели.Функция .replace принимает параметр offset , который содержит индекс текущего соответствия, поэтому вы можете просто использовать функцию заменителя и вернуть это смещение плюс единицу.Нет необходимости в массиве гласных, просто используйте набор символов гласных в шаблоне:

function vowel2index(str) {
  return str.replace(/[aeiou]/gi, (vowel, offset) => offset + 1);
}
console.log(vowel2index('this is my string')); // == 'th3s 6s my str15ng');
0 голосов
/ 29 ноября 2018

Нигде не так чисто, как ответ @CertainPerformance выше, но решение для перебора:

function vowel2index(string) {

  var result = [];

  for(var i = 0; i < string.length; i++) {
    var c = string.charAt(i);
    if(c.match(/[aeiou]/gi)) {
      result.push(i + 1);
    } else {
      result.push(c);
    }
  }
  return result.join('');
}
0 голосов
/ 29 ноября 2018

Попробуйте это:

function vowel2index(str) {
 for(i = 0; i < str.length; i++){
     if (str[i] === /[aeiou]/gi) {
        str.replace(str[i], indexOf(str[i])+1);
     }
...