Espressioni regolari per inserire “\ r” ogni n caratteri in una linea e prima di una parola completa (in pratica una funzione di ritorno a capo automatico)
-
19-09-2019 - |
Domanda
Sono nuovo di JavaScript e di espressione regolare. Sto cercando di formattare automaticamente un documento di testo al numero specifico di caratteri per riga o mettere un "\ r" prima della parola.
Questa è funzionalmente simile a wordwrap trovato in numerosi editor di testo.
Eg. Voglio 10 caratteri per riga
originale: Il mio nome è Davey Blu
.Modificato:. Il mio nome \ ris Davey \ rBlue
Vedi, se il 10 ° carattere è una parola, che mette parola intera verso il basso in una nuova linea.
Sto pensando il seguente dovrebbe funzionare in una certa misura /.{1,10}/ (Questo dovrebbe trovare nessuna 10 caratteri a destra?)
Non sono sicuro di come fare per il resto.
Si prega di aiutare.
Soluzione
fondamentalmente
text = text.replace(/.{1,10} /g, "$&\n")
sono sicuro che significava "\ n" non "\ r"
Altri suggerimenti
Ha bisogno di essere un'espressione regolare? Vorrei fare qualcosa di simile:
var str = "My name is Davey Blue.",
words = str.split(/(\s+)/);
for (var i=0,n=0; i<words.length; ++i) {
n += words[i].length;
if (n >= 10) {
words[i] = "\n" + words[i];
n = 0;
}
}
str = words.join("");
Questo farà il trucco con un'espressione regolare.
myString.replace(/((\w|\s){0,9}\s|\w+\s|$)/g, "$1\r")
(Sostituire "9" di N-1, se N è la lunghezza desiderata della linea)
In ciascuna posizione nella stringa, questa cerca di fare quanto segue in questo ordine:
1. cercare di abbinare fino a 9 caratteri avidamente (= numero possibile) seguito da uno spazio (quindi in totale max. 10 caratteri terminanti in uno spazio), quindi inserisce \ r dopo che (per mezzo di una sostituzione della stringa) < br>
2. se questo non riesce (perché nessuna parola con meno di 10 caratteri è stato trovato), corrisponde a una parola (non importa quanto tempo è) più uno spazio, quindi inserisce \ r dopo questo
3. corrisponde alla fine della stringa e inserti \ r
Non credo che una regex farà questo per voi. Vorrei google per javascript wordwrap, sono sicuro che qualcuno ha scritto una libreria per fare questo per voi