从数组/字符串中删除所有小数和单个数字

时间:2015-03-21 08:12:52

标签: javascript jquery replace

所以我的剧本会产生一大堆钢琴笔记"这与......相似。

 var songNotes  = "...";

the large Piano notes content

我的问题是在我需要的钢琴音符之间[也在小提琴中]有空的" ,,"和十进制数..所以我无法弄清楚如何删除空  ,,和小数一样大 " 1.0416666666642413,0.625,0,g3,1498.9583333333358,,0,c3,1.0416666666642413,0.625,0,C3" 我希望它们被删除,除了所需的单词

var theRightOnes = "s2,as2,cs3,ds3,fs3,gs3,as3,gs3,cs4,ds4,fs4,cs3,as4,gs4,ds5,a2,cs4,b2,c3,a3,ds4,b3,c4,as3,gs2,e3,c3,c4,cs3,ds3,a4,fs3,gs3,as3,g3,f3,b4,c5,a3,d4,as2,e4,g4,d3,b3,b2,f4,a2,d4,e4,cs5,gs1,e2,c2,c3,cs2,ds2,a3,fs2,gs2,as2,g2,f2,b3,c4,a2,d3,as1,e3,g3,d2,b2,b1,f3,a1,d5,e5";

所以有人能给我一个如何实现这一目标的线索吗? 如果有人需要更多信息,那么我已经准备好了。

问候 - Adarsh Hegde

4 个答案:

答案 0 :(得分:0)

我想你要从笔记中删除所有数字。

你可以说像吼叫

var notes = songNotes.split(",").filter(function(note){
    return isNaN(note);
});

console.log(notes);

答案 1 :(得分:0)

var notesArr = songNotes.split(",");
var len = notesArr.length;
while(len--) {
    if(!notesArr[len] || !isNaN(parseInt(notesArr[len], 10))) {
        notesArr.splice(len, 1);
    } 
}

songNotes = notesArr.join(",");

答案 2 :(得分:0)

您可以使用Array.filter(请参阅 MDN )清除不需要的值:

var wantedNotes = songNotes.split(',')
                   .filter(function (v) {
                      return isNaN(+v) && v.trim().length
                   });

jsFiddle

答案 3 :(得分:0)

只需使用正则表达式,如下所示:

var a = "1.0416666666642413,0.625,0,g3,1498.9583333333358,,0,c3,1.0416666666642413,0.625,0,c3"; console.log(a.replace(/\b(\d+(\.\d+)?),+/g,""));