简体   繁体   中英

Split string on blank lines

I like to use Javascript's split method to split a string like the one below into an array on every blank white line.

How can I accomplish this. Splitting on \\n doesn't because I'd like each paragraph to occupy just one element of the array and there are multiple \\n's in each paragraph.

Any help will be greatly appreciated!

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.

Try something like this:

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

On Windows:

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

On Linux:

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

On Mac:

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

Assuming there is a line break in between each paragraph, just split with '\\n\\n'.

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

EDIT:

In this case, the source of the text at https://raw.githubusercontent.com/NinjaBanjo/synonym-search/master/out/w00020.html split lines using '&#xd', or carriage return. After getting this text and splitting it with text.split('
\\n
') , the array is the right size. Working example at http://jsfiddle.net/cuVdE/211/ .

\\n{2,} search for 2 or more \\n and do it globally /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)); 

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM