1

javascriptのsplit関数に複数のパラメーターを指定して、複数のものを削除して配列に入れることはできますか?expamleの場合:

 var str= "This is Javascript String Split Function example ";

 var wordArray=str.split(" ");

これは私に各単語を別々に与えます

この結果に加えて、配列から「is」と「this」を削除したい のでsplit関数多くのパラメーターを入れて最初から削除することができますか?または、 split()以外の関数を使用する必要があり ますか?

4

3 に答える 3

1

あなたが望むものを達成するための多くの方法があります。基本的に削除したいのこれです

したがって、どちらもこれを行うことができます:

a。削除したい単語が常に最初と2番目の単語である場合

 var filteredArray = str.split(" ").splice(2);

b。削除する単語が文字列のどこにあってもかまいません

var  filteredArray = str.replace(/this|is/g, function(w){

        switch(w){
           case 'this':
                 return '' ;

              case 'is':
                   return '';
          }

    }).trim().split(' ');

c。これを行うにはもう1つの不完全な方法があります。

var str= "This is Javascript String Split Function example ";
var parts = str.split(' ');
var clean = [];
for (var i = 0; i < parts.length; i++) {
   var part = parts[i];
   if (part !== "This" && part !=="is")
      clean.push(part);
}

d。単純な正規表現を使用して複数の単語を置き換える

var str= "This is Javascript String Split Function example ";
   var words = ['This', 'is'];
   var text = str.replace(new RegExp('(' + words.join('|') + ')', 'g'), '').split(' '); 

あなたの必要性に基づいて、あなたはそれらのどれにでも行くことができます。

参照:これこれこれ

于 2012-12-11T10:54:36.717 に答える
0

文字列から物事を削除するためにsplitを使用しようとはしません。「置換」を使用してそれらを削除し、後で分割する必要があります。

var wordArray = str.replace(/is|this/g, '').split(" ");

これで「is」と「this」が削除され、そこから分割できます。

アップデート

正規表現を少し調整しました。それらすべてを取り除くためにagを追加するのを忘れました。

大文字と小文字を区別しないようにする場合(つまり、This、Isなどに一致させる場合)、gの後にiスイッチを追加します。

フィドル

于 2012-12-11T10:47:47.020 に答える
0

String.splitセパレータと制限の2つの引数を取ります。したがって、基本的に、結果の配列の最後からエントリを削除することはできますが(配列を制限する)、最初から削除することはできません。

詳細はこちら:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split

ただし、結果の配列を他の配列プロトタイプと連鎖させることができるため、を簡単に追加してArray.splice、必要なことを実行できます。

var wordArray = str.split(" ").splice(2);

特定の単語を具体的に削除する場合は、次を使用しますArray.filter

var wordArray = str.split(' ').filter(function(word) {
    return !/(is|this)/i.test(word);
});
于 2012-12-11T10:50:38.047 に答える