2016-09-22 6 views
2

異なるセット文字を対応する値に置き換えようとしています。たとえば、すべて<は#U34で置き換えられ、すべての$は#89で置き換えられます)。複数の異なる文字を異なる値に置き換えます。javascript

私はランダムにスローされた文字を持つ文字列の配列を持っています。例えば:

var replace = /</ig; 
    var newString = textWithCharacters.replace(replace, '#U34'); 

が、それは一度に一つの文字に対して行うことができるように、これはそうです:

var arr = [ 
'uisdhfu<', 
'u$$fd<' 
] 

は、これまでのところ、私は私が行うことができます考え出しました。私が複数をやりたいのであれば、毎回新しい文字列を作成する必要があるようです。一度にこれを行う方法はありますか?多分ループとif文を使って?しかし、私はどのように私はループの条件を定義するかを把握していないようです。

+1

複数の異なる文字をマッチさせることができ、マッチに基づいて挿入するものを動的に決定する置換機能を使用することができます。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace – Bergi

答えて

5

(例えば、'#U34')。それは正しいマッピングを使用して試合を置き換えるように、あなたが交換する方法に関数を渡すあなたが交換したい文字のリストを持つことができます

var replacementMap = { 
    '<': '#U34', 
    '$': ')#89' 
} 

// Create a RegExp to match any of the characters that are used as keys in the map. 
// For this example, this RegExp is the same as /[<$]/gi 
// Note: this method of creating a RegExp may not work with certain characters such 
// as -, ], or \ 
var replace = new RegExp('[' + Object.keys(replacementMap).join('') + ']', 'ig'); 

function getReplacementString(input) { 
    return replacementMap[input]; 
} 

var newString = textWithCharacters.replace(replace, getReplacementString); 
+1

は魅力的に働いていました。私にこれを行う方法を教えてくれてありがとう – sourlemonaid

0

あなたは、このように多くの文字を使用することができます。.replace()方法(例えば'<')にマッチした文字列を渡される第二引数のための機能を受け入れ、そして置換テキストを返します(使用して

.replace(/(x|y|z)/, '') 
1

だから、あなたはこのような何かを行うことができます。このような何か:http://www.ascii.cl/htmlcodes.htm

楽しん:

var arr = [ 
 
'uisdhfu<', 
 
'u$$fd<' 
 
]; 
 
var mapping = { 
 
    "$":")#89", 
 
    "<":"#U34", 
 
}; 
 
var regex = new RegExp(Object.keys(mapping).map((key)=>"\\"+key).join("|"),"g"); 
 
var results = arr.map((string)=>string.replace(regex,(match)=>mapping[match])); 
 
console.log(results);

0

あなたはここでは、このような何か(実行スニペットと見にconsole.log)

HTML番号のリストをしたいです: )

var array = ['#!toto','&#(i u%','$mpo*+']; 
 

 
var symbol = [' ','!','"','#','$','%','&',"'",'(',')','*','+',',','etc...']; 
 

 
console.log(array); 
 

 
for(var i = 0; i < array.length ; i++){ 
 
     
 
     var temp = ''; 
 
     for(var j = 0; j < array[i].length ; j++){ 
 
      
 
      var index = symbol.indexOf(array[i][j]); 
 

 
      if(index != -1){ 
 
      temp = temp + '&#'+(32+index); 
 
      } 
 
      else{ 
 
       temp = temp + array[i][j]; 
 
      } 
 
     } 
 
     array[i] = temp; 
 
} 
 

 
console.log(array)

+0

私はすでに仕事がうまくいった別の答えを受け入れました。ありがとうございます。このから多くを学んだ – sourlemonaid

+0

あなたは歓迎です;) –

関連する問題