簡體   English   中英

如何在Javascript中替換字符串的一部分?

[英]How to replace parts of a string in Javascript?

根據要撥打的電話,我有一個要替換其一部分的URL。

例如,我的網址格式為

var url = "http://www.example.com/server/32/users/255667753/images/233.jpg"

我想撥打相同格式的不同URL,但只更改數字。 目前,我正在這樣做

var urlPart1 = "http://www.example.com/server/"
var urlPart2 = "/users/";
var urlPart3 = "/images/";
var urlPart4 = ".jpg";

var sendRequestTo = urlPart1 + 32 + urlPart2 + 255667753 + urlPart3 + 233 + urlPart4.

但是,有沒有比Java中更好的方法呢?

您可以使用regexp

String.prototype.format = function() {
    var regexp = /\{(\d+)\}/g, values = arguments;
    return this.replace(regexp, function(match, index) {
      return values[index];
    });
  };

var server = "http://www.example.com";
console.log("{0} is {1}".format("a", "b"));
console.log("{3}/server/{0}/users/{1}/images/{2}.jpg".format(32, 255667753, 233, server));

這種方法更像c#,盡管它允許您以任意順序放置參數。

Declare this function globally somewhere

String.prototype.format = function (args) {
    var newStr = this;
    for (var key in args) {
        newStr = newStr.replace('{' + key + '}', args[key]);
    }
    return newStr;
}

// This is generic url that will be formatted on the fly with dynamic numbers
var url = "http://www.example.com/server/{serverNo}/users/{userNo}/images/{imgNo}.jpg"

// call it with your dynamic numbers
url = url.format({serverNo:230948,userNo:123897,imgNo:1239378});

And finally your url will become 
"http://www.example.com/server/230948/users/123897/images/1239378.jpg"

Happy coding.. :)

由於TypeScript更側重於面向對象編程,因此我們需要擴展接口。 我們需要擴展String接口,然后提供一個實現:

interface String {
    format(...replacements: string[]): string;
}

if (!String.prototype.format) {
  String.prototype.format = function() {
    var args = arguments;
    return this.replace(/{(\d+)}/g, function(match, number) { 
      return typeof args[number] != 'undefined'
        ? args[number]
        : match
      ;
    });
  };
}

您可以通過以下方式在任何地方使用:

var myStr = 'This is an {0} for {0} purposes: {1}';

alert(myStr.format('example', 'end'));

干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM