Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
616 views
in Technique[技术] by (71.8m points)

javascript - Split string into words with whitespace unless in between a pair of double quotation marks

I want to split this string:

get "something" from "any site"

to array. I've done that:

var array = $(this).val().replace(/s+/g, ' ').split(" ");

But I don't want to split words in quotation marks ("").

whether it can be done in a simple way?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

A solution :

var str = 'get "something" from "any site"';
var tokens = [].concat.apply([], str.split('"').map(function(v,i){
   return i%2 ? v : v.split(' ')
})).filter(Boolean);

Result :

["get", "something", "from", "any site"]

It's probably possible to do simpler. The idea here is to split using " and then split by the space the odd results of the first splitting.

If you want to keep the quotes, you may use

var tokens = [].concat.apply([], str.split('"').map(function(v,i){
     return i%2 ? '"'+v+'"' : v.split(' ')
})).filter(Boolean);

Result :

['get', '"something"', 'from', '"any site"']

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...