2009-11-20 47 views
39

Tôi có một chuỗi: "Con cáo nâu nhanh chóng nhảy qua những con chó lười."Làm cách nào để chèn ký tự sau mỗi n ký tự trong javascript?

Tôi muốn sử dụng javascript (có thể với jQuery) để chèn ký tự mỗi n ký tự. Ví dụ: Tôi muốn gọi:

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.$" 

Mục đích là sử dụng chức năng này để chèn &shy vào chuỗi dài để cho phép chúng quấn. Có lẽ ai đó biết một cách tốt hơn?

+0

Bạn nên để cho các văn bản bọc duyệt. Bạn có câu dài như bạn đã sử dụng cho ví dụ của bạn ở trên, hoặc từ dài? –

+1

Trình duyệt sẽ không bọc trong một từ, tôi có các từ dài như "ThisIsAStupidLabelThatOneOfMyUsersWillTryToMakeInMyApplication" – brendan

+0

Chẳng phải giải pháp phía máy chủ để ngắt từ thành tối đa n ký tự sẽ tốt hơn sao? – Pool

Trả lời

50
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." 
+3

+1 nhưng dấu chấm phẩy của bạn hơi bật và tắt;) –

+0

@Andy E: heh, chúng là tùy chọn ngay trước khi đóng '}'. Tôi thậm chí còn không nhận ra tôi làm điều đó nữa. Nó được sinh ra từ một "phải bảo tồn mỗi byte" tâm lý từ nhiều năm trước khi máy nén js trở thành tiêu chuẩn;) –

+0

'String.split (" ")' & 'Array.form()' –

106

Với regex

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

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

cổ vũ,

+8

Chết tiệt! Nice regex-fu ở đó. BTW là '$' cuối cùng cần thiết trong chuỗi thay thế? –

+2

** ** cuối cùng trong chuỗi thay thế là không cần thiết, bạn có thể đặt những gì bạn muốn đặt ở khoảng cách 5 khoảng trống ở đây, chẳng hạn như **
** chẳng hạn. – skymook

+4

Tôi đã đến chuỗi "" .replace (/. {5}/g, "$ &" + "
"); '. Việc kết nối ở cuối chỉ là để dễ đọc hơn. '$ &' trong thay thế khớp với chuỗi được đối sánh, do đó không cần nhóm. – matpie

1
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); 
+0

Cố gắng giải thích câu trả lời của bạn – Coder

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

Giải thích: split ('') biến một chuỗi thành một mảng. Bây giờ chúng ta muốn biến mảng trở lại thành một chuỗi đơn. Giảm là hoàn hảo trong trường hợp này. Hàm giảm của Array lấy 3 tham số, đầu tiên là bộ tích lũy, thứ hai là phần tử được lặp lại, và thứ ba là chỉ số. Vì chỉ mục mảng là 0 dựa trên, để chèn sau 5, chúng tôi đang xem chỉ mục i% 5 === 4.

0

Thỉnh thoảng bạn cũng muốn bắt đầu chèn ký tự từ đầu chuỗi vào đầu. Trong trường hợp đó điều này có thể làm:

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; 
    } 
} 
0
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); 
} 

Kết quả:

> addItemEvery("The quick brown fox jumps over the lazy dogs.", '$', 5) 
> "The q$uick $brown$ fox $jumps$ over$ the $lazy $dogs." 
Các vấn đề liên quan