2017-07-14 8 views
0

おはよう。私は文字列の一部を置き換える入力からスクリプトを実行しています。それは必要に応じて動作します。 2つのアンダースコアの分割文字列に同じ文字が含まれている場合を除きます。以下の写真は、2番目の文字「M」を最初の文字ではなく「M1」に置き換えます。文字列内の変数を置換すると間違った文字が置換される

文字列内の変数を同じ文字の多くと置き換える場所を正確に指定または宣言する方法はありますか?どんな助けでも大歓迎です。それを行うには

enter image description here

+0

私はあなたが何を求めているのかよく分かりません。したがって、最後の文字列をPH_WM_M1_LTの例にしたいですか? – gmwagner

答えて

1

あなたは、分割して、交換した値で組み立て直すのではなく、値のすべてを置き換えるすることもできます。

var spl = getVal.split('_'); 
for(var idx =0 ; idx < spl.length; idx++) { 
    var b = spl[idx].replace(/\d+/g,''); // remove all numbers? 
    spl[idx] = b + afVal; 
} 
rep = spl.join('_'); 
+0

私は注文と組み合わせに関して私の現在の状況のた​​めに分割、交換、再組み立てが必要です。ありがとう。 – arios

+0

これは実際より安全です。特に私がシナリオに入ったときには特にそうです。 PH_INF_M_M入力が最初の静止に達しました。最初に分割して、変更する必要のあるインデックスを知っているので、前にアンダースコアを付けて同様の文字列を心配する必要はありません。ありがとう。 – arios

+0

はforループなしで実行できます。同じ概念。ありがとう。 – arios

1

一つの方法は、それはあなたがMの列に表示されることを期待する方法であれば、単純に置き換える文字列にアンダースコアを追加することです。

var a = "PH_WM_M_LT" 
 
console.log(a.replace("_M", "_M1"));

+1

私はこれが簡単な修正からこれが好きです。しかし、それは私が予想していなかったいくつかのニュアンスを追加します。これは動的な組み合わせであり、以前はアンダースコアで表示されているとは限りません。 (PHなど)ご協力いただきありがとうございます。 – arios

+0

忘れてしまいましたが、配列内のどの順番になっているかを知る索引がありました。クイックIfステートメントと行けば良い。ありがとう。 – arios

1

あなたが特定の場所を指定したい場合は、たとえば、getVal.indexof( "_ M")のように、文字列にのインデックスを使用して位置を見つけることができます。次に、部分文字列を使用して具体的に値を次のように追加することができます。

function insertString(insertPoint, sValue, insertValue) 
    { 
     var n = sValue.length; 
     var frontHalf = sValue.substring(0,insertPoint); 
     var backHalf = sValue.substring(insertPoint,n); 
     return frontHalf + insertValue + backHalf; 
    } 
+0

ありがとう、私のスクリーンショットの上の数行はindexOfを持っているので、あなたは絶対に正しいです!ありがとう – arios

関連する問題