Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中替换字符串的一部分?_Javascript_String_Typescript - Fatal编程技术网

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

如何在Javascript中替换字符串的一部分?,javascript,string,typescript,Javascript,String,Typescript,我有一个URL,我想替换其中的一部分,这取决于我正在拨打的电话 例如,我的URL是 var url = "http://www.example.com/server/32/users/255667753/images/233.jpg" 我想打电话到不同的网址相同的形式,但只有号码改变。目前,我是这样做的 var urlPart1 = "http://www.example.com/server/" var urlPart2 = "/users/"; var urlPart3 = "/image

我有一个URL,我想替换其中的一部分,这取决于我正在拨打的电话

例如,我的URL是

var url = "http://www.example.com/server/32/users/255667753/images/233.jpg"
我想打电话到不同的网址相同的形式,但只有号码改变。目前,我是这样做的

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#,尽管它允许您将参数按任意顺序排列。

由于TypeScript更倾向于面向对象编程,我们需要扩展接口。我们需要扩展字符串接口,然后我们需要提供一个实现:

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.. :)
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'));

干杯

java是如何做到这一点的?你想让代码看起来怎么样?我猜他的意思是
String.format()
,所以没有内置的东西可以做到这一点?在Typescript中答案会是相同的吗?每个“如何在Typescript中完成X运行时任务”问题的答案总是与“如何在JavaScript中完成X运行时任务”的答案相同问题我在下面为你的问题添加了答案。