Javascript 将字符串X添加到特定子字符串后的字符串Y

Javascript 将字符串X添加到特定子字符串后的字符串Y,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我有两条线: str1是指向具有属性的控制器的url str1 = /Controller/Action?tableid=212&id=&someOtherVal=false str2是一个id值,当在字段中更改时,应该在“id=”是str1之后添加 如何添加此ID,例如,在str1中的“ID=”之后添加“123”?您只需使用replace: var val='123'; var str1='/Controller/Action?tableid=212&id=&someOth

我有两条线: str1是指向具有属性的控制器的url

str1 = /Controller/Action?tableid=212&id=&someOtherVal=false
str2是一个id值,当在字段中更改时,应该在“id=”是str1之后添加


如何添加此ID,例如,在str1中的“ID=”之后添加“123”?

您只需使用replace:

var val='123';
var str1='/Controller/Action?tableid=212&id=&someOtherVal=false'。替换('&id=','&id='+val);

控制台日志(str1)我希望下面的代码片段是您所期望的

var str1 = "/Controller/Action?tableid=212&id=&someOtherVal=false";
// location.protocol + location.hostname is just to complete the URL
var urltoedit = new URL(location.protocol + location.hostname + str1);
var str2 = 123;
// check if id has value or you can modify if your condition
if(urltoedit.searchParams.get("id")=="")
{
     urltoedit.searchParams.set("id",str2);
}
// valtoset is what you need
var valtoset = urltoedit.pathname+urltoedit.search;

您需要处理id是第一个还是最后一个参数,以及id是否已经有值。 以下是解决方案:

var url = "/Controller/Action?tableid=212&id=rrr&someOtherVal=false";
var parameterName = "id";
var value = "123";

function replaceParameterValueInUrl(url, parameter, value){
    var parameterStart1 = "&" + parameter + "=";
    var parameterStart2 = "?" + parameter + "=";

    //Is first parameter in URL?
    var parameterStart = url.indexOf(parameterStart1) === -1 ? parameterStart2 : parameterStart1;

    var parameterEnd = "&"; 

    var startIndex = url.indexOf(parameterStart);
    var endIndex = url.substring(startIndex + parameterStart.length).indexOf(parameterEnd);

    //Is last parameter of URL?
    if(endIndex === -1) endIndex = 0;

    var searchIndex = startIndex + endIndex;
    return url.substring(0, startIndex + parameterStart.length) + value + (endIndex === 0 ? "" : url.substring(searchIndex + parameterStart.length));
}


//Usage:
var replaced = replaceParameterValueInUrl(url, parameterName, value);

你的意思是这样的:var String=str1+str2?或者您想首先检查str1是否已更改?str1=str1.replace(/&id=&/,'&id='+str2+'&')@史蒂文:不,当我点击编辑按钮转到这个URL时,我会检查字段中是否有任何值。我只需要一个方法在“ID=”之后将这个ID值添加到这个URL中。请检查我的答案,它应该正是您所需要的