1

我正在尝试创建一个将单词存储在数组中的程序,我所做的是无论程序找到分隔符(“”或“,”)它都会将它推入数组,我的问题是它甚至存储分隔符(我必须使用数组分隔符)。

var sentence = prompt("");

var tab = [];

var word = "" ;

var separators = [" ", ","];

for(var i = 0 ; i< sentence.length ; i++){

    for(var j = 0 ; j < separators.length ; j++){

    if(sentence.charAt(i) != separators[j] && j == separators.length-1){

           word += sentence.charAt(i); 

        }else if(sentence.charAt(i) == separators[j]){

           tab.push(word);
           word = "";

        }

    }

}

tab.push(word);
console.log(tab);
4

3 回答 3

3

你可以试试这个:

var text = 'Some test sentence, and a long sentence';
var words = text.split(/,|\s/);

如果您不想要空字符串:

var words = text.split(/,|\s/).filter(function (e) {
    return e.length;
});
console.log(words); //["some", "test", "sentence", "and", "a", "long", "sentence"]

如果你需要使用数组,你可以试试这个:

var text = 'Some test sentence, and a long sentence',
    s = [',', ' '],
    r = RegExp('[' + s.join('') + ']+'),
    words = text.split(r);
于 2013-04-13T21:19:39.327 回答
2

我只会使用正则表达式:

var words = sentence.split(/[, ]+/);

如果要修复代码,请使用indexOf而不是for循环:

for (var i = 0; i < sentence.length; i++) {
    if (separators.indexOf(sentence.charAt(i)) === -1) {
        word += sentence.charAt(i);
    } else {
        tab.push(word);
        word = "";
    }
}
于 2013-04-13T21:19:14.700 回答
0

重新检查问题后,我认为您需要结合本机字符串函数和来自优秀下划线库的紧凑方法,该库删除数组中的“虚假”条目:

$('#textfield).keyup(analyzeString);
var words;
function analyzeString(event){
    words = [];
    var string = $('#textfield).val()
    //replace commas with spaces
    string = string.split(',').join(' ');
    //split the string on spaces 
    words = string.split(' ');
    //remove the empty blocks using underscore compact
    _.compact(words);
}
于 2013-04-13T21:26:42.010 回答