2016-05-04 12 views
1

Ich benutze Javascript Split-Methode, um eine Zeichenfolge wie die unten in ein Array auf jeder leeren weißen Linie zu teilen.Split-String auf Leerzeilen

Wie kann ich dies erreichen? Das Teilen auf \ n tut nicht, weil ich möchte, dass jeder Absatz nur ein Element des Arrays belegt und es in jedem Absatz mehrere \ n gibt.

Jede Hilfe wird sehr geschätzt!

String:

CHAPTER TWENTY-ONE. MARIE'S SIDE OF IT 

CHAPTER TWENTY-TWO. THE CURE COMPLETE 



CHAPTER ONE. THE FEVER MANIFESTS ITSELF 

There is a certain malady of the mind induced by too much of one 
thing. Just as the body fed too long upon meat becomes a prey to that 
horrid disease called scurvy, so the mind fed too long upon monotony 
succumbs to the insidious mental ailment which the West calls "cabin 
fever." True, it parades under different names, according to 
circumstances and caste. You may be afflicted in a palace and call it 
ennui, and it may drive you to commit peccadillos and indiscretions of 
various sorts. You may be attacked in a middle-class apartment house, and 
call it various names, and it may drive you to cafe life and affinities 
and alimony. You may have it wherever you are shunted into a backwater of 
life, and lose the sense of being borne along in the full current of 
progress. Be sure that it will make you abnormally sensitive to little 
things; irritable where once you were amiable; glum where once you went 
whistling about your work and your play. It is the crystallizer of 
character, the acid test of friendship, the final seal set upon enmity. 
It will betray your little, hidden weaknesses, cut and polish your 
undiscovered virtues, reveal you in all your glory or your vileness to 
your companions in exile--if so be you have any. 

If you would test the soul of a friend, take him into the wilderness 
and rub elbows with him for five months! One of three things will surely 
happen: You will hate each other afterward with that enlightened hatred 
which is seasoned with contempt; you will emerge with the contempt tinged 
with a pitying toleration, or you will be close, unquestioning friends to 
the last six feet of earth--and beyond. All these things will cabin fever 
do, and more. It has committed murder, many's the time. It has driven men 
crazy. It has warped and distorted character out of all semblance to its 
former self. It has sweetened love and killed love. There is an 
antidote--but I am going to let you find the antidote somewhere in the 
story. 

Antwort

2

Angenommen, es ist ein Leitungsbruch in jedem Absatz zwischen spaltete nur mit '\ n \ n'.

var paragraphs = text.split('\n\n'); 

EDIT:

In diesem Fall ist die Quelle des Textes bei https://raw.githubusercontent.com/NinjaBanjo/synonym-search/master/out/w00020.html Teilungslinien mit '& #xD' oder carriage return. Nachdem dieser Text erhalten und mit text.split('
\n
') aufgeteilt wurde, hat das Array die richtige Größe. Arbeitsbeispiel bei http://jsfiddle.net/cuVdE/211/.

+0

versuchte ich, und ich habe nicht funktioniert. Meine array.length war nur 1. Hier ist ein Link zu einer der Dateien, die ich verwende: https://raw.githubusercontent.com/NinjaBanjo/synonym-search/master/out/w00020.html – Casey

+0

Können Sie Ihren Code veröffentlichen das bekommt den Text dieser Website? – MattCorr

+0

Mit http://jsfiddle.net/cuVdE/208/ habe ich festgestellt, dass die Zeilenumbrüche, die Sie auf dieser Website sehen, tatsächlich '& # xd' sind, oder Wagenrücklauf. Ich habe mich entlang dieser Saite geteilt, und es hat funktioniert. Siehe Arbeitsbeispiel unter http://jsfiddle.net/cuVdE/210/. Ich werde auch meine Antwort aktualisieren. – MattCorr

0

\ n {2,} Suche nach 2 oder mehr \ n und tun es global/g

http://jsfiddle.net/LZf7H/3574/

var regex = /\n{2,}/g; 

function getValue() { 
    return document.getElementById("myinput").value; 
} 



function match() { 
    console.log(getValue().split(regex)); 

} 
1

so etwas wie dieses Versuchen:

var paragraphs = text 
    .replace(/\n\r/g, "\n") 
    .replace(/\r/g, "\n") 
    .split(/\n{2,}/g); 

Unter Windows:

var paragraphs = text.split(/(\n\r){2,}/g); 

Unter Linux:

var paragraphs = text.split(/\n{2,}/g); 

auf Mac:

var paragraphs = text.split(/\r{2,}/g); 
Verwandte Themen