2009-12-10 133 views
0

我有以下代码:分割字符串的特定字符

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

该函数没有考虑空白。例如,如果输入

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

的输出将是Sand。需要关于使用带有空格的单词进行功能工作的帮助。

+0

请把你的代码放在代码块 - CTRL + K :) – 2009-12-10 14:16:43

回答

4

您可以在split使用分离器,并采取一切除非slice最后一部分:

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

\w匹配单词字符,改为使用[^x],其中x是您的角色。这匹配一切,但你的性格。

所以在你的函数的第一行成为

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

,如果你想匹配由空格分隔的话,使用

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

 

PS: 但在javascript中没有String#split函数?

0

尝试以下操作:

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

尝试使用的'[\\w\\s]+'代替'\\w+'包括空格。

+0

完美的作品!尼斯 – user228720 2009-12-10 14:40:47