2015-01-03 8 views
7

Sto davvero cercando di dividere il testo con la stringa più vicina al 47 ° carattere. Come è fatto?Dividi testo/stringa nello spazio più vicino in Javascript

var fulltext = document.getElementById("text").value; 

var a = fulltext.slice(0, 47); 
console.log(a); 

var b = fulltext.slice(47, 47*2); 
console.log(b); 

var c = fulltext.slice(94, 47*3); 
console.log(c); 

Ecco un JS Fiddle - http://jsfiddle.net/f5n326gy/5/

Grazie.

+2

Il prossimo più vicino del precedente, o non importante? – dfsq

+0

perché non semplificare il più possibile le domande e postare 'var fulltext = 'il mio testo qui direttamente e tieniti concentrati direttamente sul tuo problema'' – amd

+0

Salve, finché le tre righe di testo non vanno bene, non mi dispiace quale. @dfsq –

risposta

6

Se siete interessati solo la prima parte, quindi utilizzare

var a = fulltext.match(/^.{47}\w*/) 

See demo (violino) here.


Se si desidera dividere l'intera stringa a più sottostringhe, quindi utilizzare

var a = fulltext.match(/.{47}\w*|.*/g); 

See demo (violino) here.

... e se lo si desidera sottostringhe non iniziano con il separatore di parola (come lo spazio o la virgola) e preferiscono includerlo con la partita precedente, quindi utilizzare

var a = fulltext.match(/.{47}\w*\W*|.*/g); 

See demo (violino) here.

+0

Questo sembra funzionare bene per la prima riga. Saresti in grado di mostrarmi su jsfiddle come dividere in tre righe? Grazie per il tuo tempo. –

+0

Mi dispiace @ Ωmega - ho dimenticato di taggarti –

+1

@TristanKirkpatrick - Ho aggiornato la mia risposta. Se questo non è quello che stavi cercando, ti preghiamo di chiarire le tue esigenze. –

4

È possibile trovare il limite successivo della parola utilizzando il metodo indexOf con il parametro fromIndex secondo. Successivamente è possibile utilizzare slice per ottenere una parte sinistra o quella destra.

var fulltext = "The slice() method selects the elements starting at the given start argument, and ends at, but does not include, the given end argument.";  
 
var before = fulltext.slice(0, fulltext.indexOf(' ', 47)); 
 
var after = fulltext.slice(fulltext.indexOf(' ', 47)); 
 
alert(before); 
 
alert(after);

+0

Sembra funzionare anche se con alcuni testi seleziona una parola precedente e la visualizza due volte. C'è un modo per aggirare questo? –

+0

Puoi darmi un esempio di tale testo? non posso immaginare quando può accadere. – dfsq

+0

Ho incollato nel testo da internet e non riesco a ricordare il testo esatto, mi dispiace. –

Problemi correlati