2011-07-13 5 views
0

私は立ち往生していて、本当に不快な二日酔いがあります。私を許して、私は昨日誕生日になるだろう。どうすれば文字列を分割し、必要な値を単純な、愚かなjavascript関数(KISS)で置き換えることができますか?javascript:文字列を分割して値を置換する

例:

var myvar = "John Doe needs %specialcharDD2% cookies a %specialcharXYV% !" // String 

... 

var result = "John Doe needs 50 cookies a day !" // result 

任意のヘルプは大歓迎です! :)

+0

MMMMカレーオムノムノム – scunliffe

+0

ボタンを経由してあなたの現在の状況は何してください説明し、あなたの質問は、これらの詳細を更新し 'edit'代替文字列の拡張子を持っています。 –

+0

私は私の質問を改訂しました。悪い投稿を申し訳ありません! – mate64

答えて

2

あなたは文字列の中で試合をループに以下のコードを使用することができます -

var text = 'John Doe needs %specialchar1% cookies a %specialchar2% !'; 
var matches = text.match(/%[a-zA-Z0-9]*%/g); 
for (i=0; i<matches.length; i++) { 
    alert(matches[i]); 
} 

あなたが探しているものに応じて正規表現を変更する必要があります。次に、「警告」コードを目的の機能で置き換えることができます。

5

あなたは、文字列を分割したい理由を知って、それに置き換わるものではありませんが、このように簡単に行うことができます。

myvar = myvar.replace("%specialchar1%",total)
myvar = myvar.replace("%specialchar2%",period);

http://www.w3schools.com/jsref/jsref_replace.asp

+0

ありがとう!私は単純にそのように置き換えることはできません(私の悪い投稿には申し訳ありません)。なぜなら、%xyz%の値はわからないからです。 – mate64

+0

私はまだあなたの質問を理解していない、あなたは 'total'と' period'の値を知らないか、 '%'の間に何があるのか​​分からないのですか? –

+0

私は上記の私の最初の投稿を改訂しました。私は%specialvarIDのIDを知らないので、それらを検出して%%の値を受け取る関数が必要です。 – mate64

2

また、

任意のエンディングのトークンの更新。

function repl(input) { 
    var i = 1, args = arguments; 
    return myvar.replace(/(%specialchar\w+%)/g, function() { 
     return args[i++]; 
    }); 
} 
3
var txt = "John Doe needs %specialchar1% cookies a %specialchar2% !"; 
var replacements = [50, "day"]; 

txt.replace(/%specialchar\d+%/mg, function(findings) { return replacements[findings.match(/\d+/)[0] - 1] }) 
1

MooToolsの質問の下

"Hello {myvariable}".substitute({myvariable: "world"}); 

MooTools docs

関連する問題