用JavaScript替换部分字符串

时间:2012-04-24 14:41:28

标签: javascript regex replace

如何更换:

var url = "http://localhost:2879/ServiceDonneesArchive.svc/Installations(1002)?$expand=Stations";

由:

var nameInstallation = 1002;
    var url = "http://localhost:2879/ServiceDonneesArchive.svc/Installations(nameInstallation)?$expand=Stations";

3 个答案:

答案 0 :(得分:1)

为什么这么难?对于这个用例,简单的连接将是非常可读的:

var nameInstallation = 1002;
var url = 'http://localhost:2879/ServiceDonneesArchive.svc/Installations(' + nameInstallation + ')?$expand=Stations';

答案 1 :(得分:1)

使用.replace() method。要使用"nameInstallation"替换url变量中"1002"的任何实例:

url = url.replace(/nameInstallation/g, "1002");

或者,如果您在变量nameInstallation = 1002中有替换值:

url = url.replace(/nameInstallation/g, nameInstallation);

编辑:正如David Thomas所指出的,你可能不需要正则表达式上的g标志,它是.replace()的第一个参数。使用此“全局”标志,它将替换文本“nameInstallation”的所有实例。如果没有标志,它将只替换第一个实例。所以要么包括它,要么根据您的需要将其关闭。 (如果您只需要替换第一个匹配项,您还可以选择将字符串作为第一个参数而不是正则表达式。)

答案 2 :(得分:0)

试试这个javascript函数

// from http://www.codeproject.com/Tips/201899/String-Format-in-JavaScript
        String.prototype.format = function (args) {
            var str = this;
            return str.replace(String.prototype.format.regex, function(item) {
                var intVal = parseInt(item.substring(1, item.length - 1));
                var replace;
                if (intVal >= 0) {
                    replace = args[intVal];
                } else if (intVal === -1) {
                    replace = "{";
                } else if (intVal === -2) {
                    replace = "}";
                } else {
                    replace = "";
                }
                return replace;
            });
        };
        String.prototype.format.regex = new RegExp("{-?[0-9]+}", "g");

并使用:

var url = "http://localhost:2879/ServiceDonneesArchive.svc/Installations{0}?$expand=Stations";
var nameInstallation = 1002;
var result = url.format(nameInstallation );