Tengo el siguiente código:

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"]

La función no tiene en cuenta los espacios en blanco. Por ejemplo si ingresas

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

La salida será arena. Necesita ayuda para hacer que la función funcione con palabras que tienen espacios en blanco.

0
user228720 10 dic. 2009 a las 17:14

4 respuestas

La mejor respuesta

Puede usar su separador dentro de split y tome todo excepto la última parte con slice :

function ends_with(string, character) {
    return string.split(character).slice(0, -1);
}
4
Gumbo 10 dic. 2009 a las 14:24

Pruebe lo siguiente:

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, '');
    });
}
0
SLaks 10 dic. 2009 a las 14:18

Intente usar '[\\w\\s]+' en lugar de '\\w+' para incluir espacios en blanco.

1
Mike Nelson 10 dic. 2009 a las 14:34

\w coincide con caracteres de palabras, use [^x] en su lugar, donde x es su personaje. Esto coincide con todo menos con tu personaje.

Entonces la primera línea en su función se convierte en

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

Por otro lado, si desea unir palabras separadas por espacios en blanco, use

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

PD: pero ¿no hay una función String#split en javascript?

2
akuhn 10 dic. 2009 a las 15:20