我目前正在开发一个网络应用程序,我需要根据用户选择构建一个URL,用户每个产品只能选择一个项目,所以我应该能够创建一个这样的网址,
?collection = French%20Curves& room = Bright%20And%20Airy& scene = best& wall_treatment = Wall Treatment 1
例如,如果用户选择了不同的wall_treatment
,我需要了解一些如何搜索我正在生成的字符串,并用新的相关数据替换该部分?
我用谷歌搜索并试图使用.replace()
但这不起作用,有什么想法吗?
答案 0 :(得分:0)
你能试试吗,
var String ='?collection=French%20Curves&room=Bright%20And%20Airy&scene=best&wall_treatment=Wall Treatment 1';
var Urls = String.split('wall_treatment=');
String = String.replace(Urls[1], "YourString");
console.log(String); //output : ?collection=French%20Curves&room=Bright%20And%20Airy&scene=best&wall_treatment=YourString
答案 1 :(得分:0)
您可以这样替换:
wt="something"; // user entered value
s = '?collection=French%20Curves&room=Bright%20And%20Airy&scene=best&wall_treatment=Wall Treatment 1';
s = s.replace(/([?&]wall_treatment=)[^&]*/i, "$1" + wt);
//=> ?collection=French%20Curves&room=Bright%20And%20Airy&scene=best&wall_treatment=something
答案 2 :(得分:0)
您可以每次构建url而不是替换字符串中的内容:
var collection = 'French Curves';
var room = 'Bright and Airy';
var scene = 'best';
var wallTreatment = 'Wall Treatment 1';
newUrl = '?collection=' + collection + '&room=' + room + '&scene=' + scene + '&wall_treatment=' + wallTreatment';
然后有点urlencode,一切都应该没问题。如果您的GET
- 参数是动态的,那么您也可以在foreach中执行此操作。
答案 3 :(得分:0)
您可以构建匹配字符串任何部分的正则表达式,如下所示:
var urlPart = "wall_treatment";
var reg = new RegExp("([&?]+)" + urlPart + "=[^&]+");
只需将"wall_treatment"
替换为包含字符串/部分网址的变量。 [^&]+
匹配网址中&
的下一个出现的任何内容。
将其替换为:
var yourURL = "?collection=French%20Curves&room=Bright%20And%20Airy&scene=best&wall_treatment=Wall Treatment 1";
var new_value = "Wall Treatment 2";
yourURL.replace(reg, "$1" + urlPart + "=" + new_value);
解决了这个问题后,请允许我建议您应该尝试从对象或数组构建url,而不是替换url字符串中的变量:
var myURLSearchObject = {},
addURLSearchPart = function(key, value) {
myURLSearchObject[key] = value;
},
buildURLSearch = function() {
var string = "?";
for (var key in myURLSearchObject) {
if (myURLSearchObject.hasOwnProperty(key)) {
string.length > 1 && (string += '&');
string += key;
string += '=';
string += myURLSearchObject[key];
}
}
return string;
};
现在您可以像这样使用它:
addURLSearchPart('hello', 'hi');
addURLSearchPart('bye', 'goodbye');
buildURLSearch();
答案 4 :(得分:0)
尝试:
(?i)(?<=wall_treatment=)[^&]+
构建上面的正则表达式,其中wall_treatment可以是您网址中的任何参数。
如果是scene
正则表达式将捕获best
如果wall_treatment
正则表达式将捕获Wall Treatment 1
。
我希望这有帮助!