js中动态字符串替换如何写?-美女图片,美女写真,写真美女,图片美女,美女写真,小电影,美女视频,搞笑视频,人体艺术,人体摄影,人体写真,免费电影
 您的位置:首页>>综合知识>>正文
 
js中动态字符串替换如何写?
  来源:   作者:   [字体 ]
 
myy (三级用户 该版得分小于等于1000分,大于500分   2005-01-17 10:02:02 在 Web 开发 / JavaScript 提问

比如:

var   p="myparam";     //这是个字符串
var   v=30;                   //这是个数字

var   url="http://aaa.bbb.com/a.jsp?myparam=12&xx=33";

现在我想把url变成:

var   url="http://aaa.bbb.com/a.jsp?myparam=30&xx=33";

如何写?注意,p,v   是动态的,不能写死。
问题点数:100、回复次数:18
1楼  myy   () 三级用户 该版得分小于等于1000分,大于500分  回复于 2005-01-17 10:04:12  得分 0

另外,url中可能没有“myparam=30”,则直接加入进去,
url其他的参数都要原封不动,顺序可以打乱。
Top
2楼  ufrshchenw   (tchanway) 四级用户 该版得分小于等于2000分,大于1000分  回复于 2005-01-17 10:12:45  得分 1

eval("http://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33")
Top
3楼  myy   () 三级用户 该版得分小于等于1000分,大于500分  回复于 2005-01-17 10:18:35  得分 0

ufrshchenw(tchanway)   的方法没看懂,也可能是我没说清楚吧。

我是想把原来的url中后面的指定的   “参数=值”换成“参数=新值”,如果没有,就加进去。


Top
4楼  myy   () 三级用户 该版得分小于等于1000分,大于500分  回复于 2005-01-17 10:20:51  得分 0

eval()   是把字符串当表达式执行,

"http://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33"

执行后,返回什么呢?
Top
5楼  czcty   (peter) 四级用户 该版得分小于等于2000分,大于1000分  回复于 2005-01-17 10:27:03  得分 1


Top
6楼  lawyu   (雨淋漓) 二星用户 该版得分小于等于30000分,大于10000分  回复于 2005-01-17 10:36:05  得分 1

var   a;
a="ttp://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33";
不行吗?
这样a应该就是http://aaa.bbb.com/a.jsp?myparam=30&xx=33
Top
7楼  myy   () 三级用户 该版得分小于等于1000分,大于500分  回复于 2005-01-17 10:45:08  得分 0

我倒,看来我的表达能力确实差   :-(

再说详细点吧:

这是原来的url的可能情况:
http://aaa.bbb.com/a.jsp
http://aaa.bbb.com/a.jsp?
http://aaa.bbb.com/a.jsp?xx=33
http://aaa.bbb.com/a.jsp?xx=33&yy=99
http://aaa.bbb.com/a.jsp?myparam=30&xx=33&yy=99
http://aaa.bbb.com/a.jsp?xx=33&yy=99&myparam=30
....
现在给定:
var   p="myparam";     //这是个字符串
var   v=22;                   //这是个数字

经过处理后,原来的url应该变成下面的新url:

http://aaa.bbb.com/a.jsp?myparam=22
http://aaa.bbb.com/a.jsp?myparam=22
http://aaa.bbb.com/a.jsp?xx=33&myparam=22
http://aaa.bbb.com/a.jsp?xx=33&yy=99&myparam=22
http://aaa.bbb.com/a.jsp?myparam=22&xx=33&yy=99
http://aaa.bbb.com/a.jsp?xx=33&yy=99&myparam=22

如果给定:
var   p="xx";     //这是个字符串
var   v=22;         //这是个数字

经过处理后,原来的url应该变成下面的新url:

http://aaa.bbb.com/a.jsp?xx=22
http://aaa.bbb.com/a.jsp?xx=22
http://aaa.bbb.com/a.jsp?xx=22
http://aaa.bbb.com/a.jsp?xx=22&yy=99
http://aaa.bbb.com/a.jsp?myparam=30&xx=22&yy=99
http://aaa.bbb.com/a.jsp?xx=22&yy=99&myparam=30

----------------------------------------
这会应该说清楚了吧?
Top
8楼  myy   () 三级用户 该版得分小于等于1000分,大于500分  回复于 2005-01-17 10:52:21  得分 0

算了,自己搞定了:

var   p="myparam";     //这是个字符串
var   v=22;                   //这是个数字
var   url="http://aaa.bbb.com/a.jsp?myparam=30&xx=33&yy=99"

var   reg=new   RegExp(p+"="+"\\d*","g");  

url=url.replace(reg,p+"="+v);  
alert(url);

考虑得可能是不太全面,但能用了,欢迎高手请提建议,谢谢!
也谢谢上面的各位。

Top
9楼  boneeater   (狗狗) 四级用户 该版得分小于等于2000分,大于1000分  回复于 2005-01-17 11:01:36  得分 1

楼主用正则表达式的方法不错啊,但是为什么不直接写成http://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33"呢?

Top
10楼  fl99   (笨笨) 五级用户 该版得分小于等于5000分,大于2000分  回复于 2005-01-17 11:05:29  得分 1



Top
11楼  myy   () 三级用户 该版得分小于等于1000分,大于500分  回复于 2005-01-17 11:08:04  得分 0

因为:

我!@#$%^&*,请仔细看看上面我的详细说明。



改进了一下,这是完整的函数:

    function   doGotoPage(to,pn)
    {
        var   p=parseInt(to);
        if(isNaN(p))   return;
        var   h=window.location.href;
        var   s=window.location.search;
        if(!s)  
        {
            window.location.href=h+"?"+pn+"="+p;
            return;
        }
        if(s=="?")  
        {
            window.location.href=h+pn+"="+p;
            return;
        }
        var   reg=new   RegExp(pn+"="+"\\d*","g");
        if(reg.test(h))
            h=h.replace(reg,pn+"="+p);   //alert(h);
        else
            h=h+"&"+pn+"="+p;
        window.location.href=h;
    }

Top
12楼  meizz   (梅花雪) 五星用户 该版得分小于等于200000分,大于100000分  回复于 2005-01-17 11:20:22  得分 90

你的替换正则确实不是很准确,   改一下先.


有则替换,   无则添加!   :)
Top
13楼  wen1818   (冷月孤心) 五级用户 该版得分小于等于5000分,大于2000分  回复于 2005-01-17 13:06:14  得分 0

http://aaa.bbb.com/a.jsp?"+p+"="+v+"&xx=33"
Top
14楼  myy   () 三级用户 该版得分小于等于1000分,大于500分  回复于 2005-01-17 13:55:46  得分 0

十分谢谢meizz(梅花雪)前辈!



to   wen1818(冷月孤心)   ,以及类似回答的所有人:

谢谢你们的热心,但请看清楚我的要求先。
Top
15楼  liaohaiying   (小菜) 二级用户 该版得分小于等于500分,大于100分  回复于 2005-01-17 14:22:03  得分 5

meizz(梅花雪),强,晕,看到你的答案才知道我自己想到的有多少的落后(逻辑一样,但方法却要烦N倍)。
顶一下!
领教了!
Top
16楼  myy   () 三级用户 该版得分小于等于1000分,大于500分  回复于 2005-01-17 14:58:23  得分 0

var   reg   =   new   RegExp("(^|&|\\?)("+   name   +"=)([^&]*)(&|$)");

meizz(梅花雪)前辈的这个表达式允许直接是字符串开头部分,
但实际的url不会前面什么都没有吧?

也许这样更好:

var   reg   =   new   RegExp("(&|\\?)("+   name   +"=)([^&]*)(&|$)");

Top
17楼  meizz   (梅花雪) 五星用户 该版得分小于等于200000分,大于100000分  回复于 2005-01-17 15:05:06  得分 0

this.substr(this.indexOf("?")+1)     我匹配的是从URL里的   ?   号部分开始的.
Top
上一篇:ASP的函数详解 2006-3-21 23:50:07
下一篇:没有了 【字体: 】【关闭窗口
与“js中动态字符串替换如何写?”相关的文章
·ASP的函数详解·ASP+Access的安全隐患及对策
·Asp程序错误详细说明例表·asp动态include文件
·初看ASP-针对初学者·解析asp的脚本语言 
·使用ASP脚本技术·免费建qq群
·QQ繁体字资料经典签名与个人说明 01·QQ繁体字资料经典签名与个人说明 03
·QQ繁体字资料经典签名与个人说明 02·免费建qq群
·QQ繁体字资料经典签名与个人说明 01
 
· 最 近 更 新 ·
 
· 热 点 文 章 ·