简体   繁体   中英

Split String at specific character

I have the following code:

var string = "word1;word2;word3,word4,word5,word6.word7";

function ends_with(string, character) {
  var regexp = new RegExp('\\w+' + character, 'g');
  var matches = string.match(regexp);
  var replacer = new RegExp(character + '$');
  return matches.map(function(ee) {
    return ee.replace(replacer, '');
  });
}
// ends_with(string, ';') => ["word1", "word2"]

The function takes no regard to whitespace. For example if you input

ends_with('Jonas Sand,', ',')

the output will be Sand. Need help on making the function work with words that has whitespace.

You can use your separator within split and take all except the last part with slice :

function ends_with(string, character) {
    return string.split(character).slice(0, -1);
}

\\w matches word characters, use [^x] instead, where x is your character. This matches everything but your character.

So the first line in your function becomes

var regexp = new RegExp('[^' + character + "]+" + character, 'g');

on the other hand, if you want to match words separated by white space, use

var regexp = new RegExp('(\\w|\\s)+" + character, 'g');

PS: but isn't there a String#split function in javascript?

尝试使用'[\\\\w\\\\s]+'而不是'\\\\w+'来包含空格。

Try the following:

var string = "word1;w ord2;word3,word4,word5,word6.word7";

function ends_with(string, character) {
    var regexp = new RegExp('.+' + character, 'g');
    var matches = string.match(regexp);
    var replacer = new RegExp(character + '$');
    return matches.map(function(ee) {
        return ee.replace(replacer, '');
    });
}

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