admin管理员组

文章数量:1434363

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.

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.

Share Improve this question edited Dec 10, 2009 at 14:20 Dominic Rodger 99.9k37 gold badges203 silver badges217 bronze badges asked Dec 10, 2009 at 14:14 user228720user228720 1034 silver badges9 bronze badges 1
  • 1 Please put your code in code blocks - CTRL+K :) – Justin Swartsel Commented Dec 10, 2009 at 14:16
Add a ment  | 

4 Answers 4

Reset to default 4

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 bees

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?

Try using '[\\w\\s]+' instead of '\\w+' to include whitespace.

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, '');
    });
}

本文标签: javascriptSplit String at specific characterStack Overflow