Как я могу вставить символ после каждого 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."