关于String.prototype.Format的问题

myy 2007-03-29 10:11:33
String.prototype.Format = function(str)
{
if(arguments.length==0) return this;
try {
var arg = arguments;
return this.replace(/\{(\d+)\}/g, function(a,b){return arg[b]||a});
}
catch (ex) {
for(var i=0, s=this, n=arguments.length; i<n; i++) {
s = s.split("{"+ i +"}").join(arguments[i]);
}
}
return s;
}

这是从网上找到的String.prototype.Format函数,
原作者好象是 梅花雨,不好意思,记不太清了。

我js水平很菜,谁能帮忙改一下,使之能支持下面的效果:

"aaa{0}bbb{1}ccc".Format("","333");

==> "aaabbb333ccc"

...全文
311 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloudgamer 2007-03-29
  • 打赏
  • 举报
回复
主要是arg[b]||a这里
arg[0]是空字符所以就返回了a即{0}
cloudgamer 2007-03-29
  • 打赏
  • 举报
回复
String.prototype.Format = function(str)
{
if(arguments.length==0) return this;
try {
var arg = arguments;
return this.replace(/\{(\d+)\}/g, function(a,b){return arg[b]});
}
catch (ex) {
for(var i=0, s=this, n=arguments.length; i<n; i++) {
s = s.split("{"+ i +"}").join(arguments[i]);
}
}
return s;
}
cloudgamer 2007-03-29
  • 打赏
  • 举报
回复
String.prototype.Format = function(str)
{
for(var i=0, s=this, n=arguments.length; i<n; i++) {
s = s.split("{"+ i +"}").join(arguments[i]);
}
return s;
}
myy 2007-03-29
  • 打赏
  • 举报
回复
多谢了。
hbhbhbhbhb1021 2007-03-29
  • 打赏
  • 举报
回复
如果你只想实现下面的功能
<script language=javascript>
String.prototype.Format2 = function()
{
if(arguments.length==0) return this;
var temp=new Array();
var arg = arguments;
for(var i=0;i<arguments.length;i++)
temp.push(arguments[i])
var i=0
return(this.replace(/\{\d+\}/g,function(a){return temp[i++]}))
}
alert("aaa{0}bbb{1}ccc".Format2("","333"));
</script>

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧