Skip to content Skip to sidebar Skip to footer

How To Split String With Multiple Rules In Javascript

I have this string for example: str = 'my name is john#doe oh.yeh'; the end result I am seeking is this Array: strArr = ['my','name','is','john','&#doe','oh','&yeh']; whi

Solution 1:

Assuming the result should be '&doe' and not '&#doe', a simple solution would be to just replace all . and # with & split by spaces:

strArr = str.replace(/[.#]/g, ' &').split(/\s+/)

/\s+/ matches consecutive white spaces instead of just one.

If the result should be '&#doe' and '&.yeah' use the same regex and add a capture:

strArr = str.replace(/([.#])/g, ' &$1').split(/\s+/)

Solution 2:

You have to use a Regular expression, to match all special characters at once. By "special", I assume that you mean "no letters".

var pattern = /([^ a-z]?)[a-z]+/gi;             // Pattern
var str = "my name is john#doe oh.yeh";         // Input string
var strArr = [], match;                         // output array,  temporary var
while ((match = pattern.exec(str)) !== null) {  // <-- For each match
   strArr.push( (match[1]?'&':'') + match[0]);  // <-- Add to array
}
// strArr is now:
// strArr = ['my', 'name', 'is', 'john', '&#doe', 'oh', '&.yeh']

It does not match consecutive special characters. The pattern has to be modified for that. Eg, if you want to include all consecutive characters, use ([^ a-z]+?).

Also, it does nothing include a last special character. If you want to include this one as well, use [a-z]* and remove !== null.

Solution 3:

use split() method. That's what you need: http://www.w3schools.com/jsref/jsref_split.asp

Ok. i saw, you found it, i think:

1) first use split to the whitespaces 2) iterate through your array, split again in array members when you find # or . 3) iterate through your array again and str.replace("#", "&#") and str.replace(".","&.") when you find

Solution 4:

I would think a combination of split() and replace() is what you are looking for:

str = "my name is john#doe oh.yeh";strArr = str.replace('\W',' &');strArr = strArr.split(' '); 

That should be close to what you asked for.

Solution 5:

This works:

array = string.replace(/#|\./g, ' &$&').split(' ');

Take a look at demo here: http://jsfiddle.net/M6fQ7/1/

Post a Comment for "How To Split String With Multiple Rules In Javascript"