Ich habe eine Schnur: "Der schnelle Braunfuchs springt über die faulen Hunde."
Ich möchte JavaScript (möglicherweise mit jQuery) verwenden, um alle n Zeichen ein Zeichen einzufügen . Zum Beispiel möchte ich anrufen:
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.$"
Das Ziel ist es, diese Funktion zu verwenden, um lange Zeichenfolgen einzufügen und zu scheuen , damit sie umbrochen werden können.
Vielleicht kennt jemand einen besseren Weg?
javascript
string
brendan
quelle
quelle
Antworten:
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."
quelle
}
. Ich merke nicht einmal mehr, dass ich das mache. Es ist aus einer "Muss jedes Byte erhalten" -Mentalität von Jahren geboren, bevor js Kompressoren zum Standard wurden;)String.split("")
&Array.form()
Mit Regex
"The quick brown fox jumps over the lazy dogs.".replace(/(.{5})/g,"$1$") The q$uick $brown$ fox $jumps$ over$ the $lazy $dogs.$
Prost,
quelle
$
in der Ersatzzeichenfolge benötigt?"string".replace(/.{5}/g, "$&" + "<br>");
. Die Verkettung am Ende soll nur das Lesen erleichtern.$&
In der Ersetzung stimmt die übereinstimmende Zeichenfolge überein, sodass keine Gruppierung erforderlich ist..
sie nicht mit\n
oder übereinstimmt\r
. Dies ist perfekt zum Falten langer Klartextzeilen, bei Webinhalten jedoch möglicherweise nicht wünschenswert. Um Zeilenumbrüche in das Spiel aufzunehmen, verwenden Sie/[\s\S]{5}/g
.var str = "123456789"; var parts = str.match(/.{1,3}/g); var new_value = parts.join("-"); //returns 123-456-789
quelle
let s = 'The quick brown fox jumps over the lazy dogs.'; s.split('').reduce((a, e, i)=> a + e + (i % 5 === 4 ? '$' : ''), '');
Erklären Sie: split ('') verwandelt einen String in ein Array. Jetzt wollen wir das Array wieder auf eine einzige Zeichenfolge zurücksetzen. Reduzieren ist in diesem Szenario perfekt. Die Reduzierungsfunktion des Arrays verwendet 3 Parameter, der erste ist der Akkumulator, der zweite ist das iterierte Element und der dritte ist der Index. Da der Array-Index auf 0 basiert und nach dem 5. eingefügt werden soll, betrachten wir den Index i% 5 === 4.
quelle
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);
quelle
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); }
Ergebnis:
> addItemEvery("The quick brown fox jumps over the lazy dogs.", '$', 5) > "The q$uick $brown$ fox $jumps$ over$ the $lazy $dogs."
quelle
Ich habe etwas Ähnliches getan, um eine
friendCode
für eine mobile App zu trennen, aber Array zu verwenden und zu reduzieren .Dies nimmt eine Zeichenfolge, überprüft alle
n
Zeichen und fügt an dieser Stelle ein Trennzeichen hinzu./** * A function to easily inject characters every 'n' spaces * @param {string} friendCode The string we want to inject characters in * @param {*} numDigits Determines the 'n' spaces we want to inject at * @param {*} delimiter The character(s) we want to inject */ function formatFriendCode(friendCode, numDigits, delimiter) { return Array.from(friendCode).reduce((accum, cur, idx) => { return accum += (idx + 1) % numDigits === 0 ? cur + delimiter : cur; }, '') } formatFriendCode("000011112222", 4, ' ') // output "0000 1111 2222 " formatFriendCode("The quick brown fox jumps over the lazy dogs.", 5, '$') // output "The q$uick $brown$ fox $jumps$ over$ the $lazy $dogs.$"
quelle
Hier ist eine der vorherigen Antworten, aber ich habe sie in eine Funktion eingeschlossen und ihr einen "Offset" -Parameter gegeben, anstatt sie fest zu codieren.
// https://stackoverflow.com/a/2712896/3480193 addCharToStringEveryXSpots(str, char, offset) { if ( ! char ) { return str; } let regExPattern = new RegExp('(.{' + offset + '})', 'g'); return str.replace(regExPattern, '$1' + char); };
quelle