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)

StackOverflow https://stackoverflow.com/questions/2232603

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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top