Как я могу вставить символ после каждого n символов в javascript?

У меня есть строка: "Быстрая коричневая лиса прыгает через ленивых собак".

Я хочу использовать javascript (возможно, с jQuery), чтобы вставить символ в каждый n символов. Например, я хочу позвонить:

var s = "The quick brown fox jumps over the lazy dogs.";
var new_s = UpdateString("$",5);
// new_s should equal "The q$uick $brown$ fox $jumps$ over$ the $lazy $dogs.$"

Цель состоит в том, чтобы использовать эту функцию для вставки & shy в длинные строки, чтобы они могли их обернуть. Может быть, кто-то знает лучший способ?

Ответ 1

function chunk(str, n) {
    var ret = [];
    var i;
    var len;

    for(i = 0, len = str.length; i < len; i += n) {
       ret.push(str.substr(i, n))
    }

    return ret
};

chunk("The quick brown fox jumps over the lazy dogs.", 5).join('$');
// "The q$uick $brown$ fox $jumps$ over$ the $lazy $dogs."

Ответ 2

С regex

"The quick brown fox jumps over the lazy dogs.".replace(/(.{5})/g,"$1$")

The q$uick $brown$ fox $jumps$ over$ the $lazy $dogs.$

веселит,

Ответ 3

var str="ABCDEFGHIJKLMNOPQR";
function formatStr(str, n) {
   var a = [], start=0;
   while(start<str.length) {
      a.push(str.slice(start, start+n));
      start+=n;
   }
   console.log(a.join(" "));
}
formatStr(str,3);

Ответ 4

let s = 'The quick brown fox jumps over the lazy dogs.';
s.split('').reduce((a, e, i)=> a + e + (i % 5 === 4 ? '$' : ''), '');

Объяснение: split ('') превращает строку в массив. Теперь мы хотим превратить массив в одну строку. Уменьшить является идеальным в этом сценарии. Функция уменьшения массива принимает 3 параметра, сначала это аккумулятор, второй - итерированный элемент, а третий - индекс. Поскольку индекс массива равен 0, для вставки после 5-го мы смотрим на индекс i% 5 === 4.

Ответ 5

Иногда вы также хотите начать вставлять символы с конца строки в начало. В этом случае это может сделать:

function insert_spaces(string, space_every_nr, reverse, character) {
var insert_string = string.toString();

if (reverse == true) {
    var insert_string = string.toString();
    var length_of_string=string.length;
    var count=0;
    for (var i = 0; i < string.length+count; i+=space_every_nr) {
        insert_string=insert_string.substring(0,i)+character+insert_string.substring(i ,(string.length+count));
        count++;
    }
    return insert_string
} else if(reverse ==false) {
    var count=0;
    var j=0;
    for (var i = string.length; i > 0; i -= space_every_nr) {
        insert_string=insert_string.substring(0,i)+character+insert_string.substring(i ,(string.length+count));
        count++;
    }
    return insert_string;
  }
}

Ответ 6

function addItemEvery (str, item, every){
  for(let i = 0; i < str.length; i++){
    if(!(i % (every + 1))){
      str = str.substring(0, i) + item + str.substring(i);
    }
   }
  return str.substring(1);
}

Результат:

> addItemEvery("The quick brown fox jumps over the lazy dogs.", '$', 5)
> "The q$uick $brown$ fox $jumps$ over$ the $lazy $dogs."