3

私はjavascriptとjqueryを使用しています、私は次のような文字列を持っています

  var apiUrlAnswer = 'https://api.stackexchange.com/2.0/answers/{ids}?order=desc&sort=activity&site=stackoverflow';

{ids}を変数に置き換える必要があります。

C#では、と呼ばれるメソッドを使用することが可能です

String.Format(https://api.stackexchange.com/2.0/answers/{0}?order=desc&sort=activity&site=stackoverflow, myVariable);

単純な文字列の連結を回避できるように、Javascriptに類似したものが存在するかどうかを知りたいです。

ご協力いただきありがとうございます!

4

5 に答える 5

5

String.replace()メソッドを使用します:

var apiUrlAnswer = 'https://api.stackexchange.com/2.0/answers/{ids}?order=desc&sort=activity&site=stackoverflow';

apiUrlAnswer = apiUrlAnswer.replace("{ids}", yourVariable);

// OR, if there might be more than one instance of '{ids}' use a regex:
apiUrlAnswer = apiUrlAnswer.replace(/\{ids\}/g, yourVariable);
于 2012-08-02T06:26:55.807 に答える
3

これがString.format(c#のような)です。javascriptsStringオブジェクトを拡張して、次のようなフォーマットメソッドを含めました。

String.format = function(stringToFormat, argsForFormat) {

    for (var i = 0; i < argsForFormat.length; i++) {
        var regex = new RegExp('\{(' + i + ')}', 'g');
        stringToFormat = stringToFormat.replace(regex, argsForFormat[i]);
    }

    return stringToFormat;    
};

あなたはそれをこのように呼ぶことができます

var args = [1, 'activity', 'stackoverflow', 'desc']   
var apiUrlAnswer = 'https://api.stackexchange.com/2.0/answers/{0}?order={3}&sort={1}&site={2}';
var apiUrlAnswer = String.format(apiUrlAnswer, args);

または、インラインバージョンは次のようになります

var apiUrlAnswer = String.format('https://api.stackexchange.com/2.0/answers/{0}?order={3}&sort={1}&site={2}', [1, 'activity', 'stackoverflow', 'desc']);

と別の例

String.format("http://{0}.{1}.com", ['www', 'stackoverflow']);
于 2012-08-02T06:47:09.330 に答える
1

これを頻繁に行う場合、正規表現を使用するより堅牢な代替手段は、mustache.jsなどのクライアント側のテンプレートエンジンを使用することです。私はこれをうまく使用しました、そしてそれは速くて軽量です。

var view = {
  ids: "Andrew"
};

var output = Mustache.render("https://api.stackexchange.com/2.0/answers/{{ids}}?order=desc&sort=activity&site=stackoverflow", view);

これには、データとプレゼンテーションをうまく分離できるという利点があります。

于 2012-08-02T06:29:27.800 に答える
0

replaceを使用するのはどうですか?

apiUrlAnswer = apiUrlAnswer.replace('{ids}', 'test');
于 2012-08-02T06:28:06.727 に答える
0

試す

var id = 'your_id';
var apiUrlAnswer = 'https://api.stackexchange.com/2.0/answers/'+id+'?order=desc&sort=activity&site=stackoverflow';
于 2012-08-02T06:31:17.967 に答える