2017-01-02 5 views
-1

データベースに大きなテキストフィールドが格納されています。テキストフィールドには、console.log()の動作と同様に、特定の場所に変数が設定されています。Javascript - 文字列を変数の場所にテキストに挿入する

はその後、私は正しい動的な値を持つ変数をスワップアウトでした「$のuser1が$の件名を完了するために、$ user2ので作業している間にこのテキストは、$日に、$ USER1によって書かれました」。

これを解決する簡単な方法があるのか​​、それぞれの場所で文字列を分割してから新しい値で再構築するのが不思議です。

+0

?あなたが使用する完全な文字列/変数/データを提供してください。 – Dekel

答えて

0

replace関数をjavascriptで使用することができます。regexを使用します。

例:

var user1 = "Joe"; 
var original = "This text was written by $user1, on $date, while $user1 was working with $user2 to complete the $subject"; 
var newString = original.replace(/\$user1/g, user1); 

のように。

+0

パーフェクト、Tha'erに感謝します。 – opusprime

+0

あなたは歓迎です:)親切に答えとしてマークしてください –

0

String.prototype.replaceは、マッチングのためにRegExpで呼び出すことができ、置換文字列を動的に決定する関数を呼び出すことができます。書式文字列の変数と同じプロパティ名と置換えの値を持つオブジェクトマップを作成できる場合は、一致したプロパティ名を使用してマップオブジェクトから対応する値を取得することで、それらをすべて1回で置き換えることができます。このような

何か:あなたの変数がどのように見えるか

var format = "This text was written by $user1, on $date, while $user1 was working with $user2 to complete the $subject"; 
 

 
var replacementsMap = { 
 
    user1: "John", 
 
    date: new Date(), 
 
    user2: "Jane", 
 
    subject: "Collaboration Project" 
 
}; 
 

 
var result = format.replace(/\$([a-z]+\d*)/g, function(match, prop) { 
 
    // match => the full string matched by the regex (e.g. $user1, etc) 
 
    // prop => the captured part of the match (i.e. not including the $) 
 
    return replacementsMap[prop]; 
 
}); 
 

 
document.getElementById("result").innerHTML = result;
<div id="result"></div>

+0

Genius!ありがとうBrian – opusprime

+0

あなたは大歓迎です、@opusprime。 :) – Bryan

関連する問題