<script>
function sprintf(){
for(i=1;i<=arguments.length;i++)
arguments[0]=arguments[0].replace("%s",arguments[i]);
return arguments[0];
}
str=sprintf("%s好,%s","早上","王海")
alert(str);
</script>

解决方案 »

  1.   

    <body>
    <script>
    function vsprintf() {
        for(var i = 0;i < arguments.length; i ++) {
            document.body.innerHTML += arguments[i];
        }
    }
    vsprintf("haha", " dfksdlfj", 3, true, "fkdl");
    </script>    
    </body>
      

  2.   

    qiushuiwuhen(秋水无恨) :
    好象只能处理字符串参数(%s),象其他的%d,%f,%x,%u等呢?
      

  3.   

    不理解
    javascript本身的字符串功能比C语言的sprintf之类强得多
    一堆加号比用一个sprintf,两个括号,还有一堆逗号,哪个更方便?
      

  4.   

    javascript 是弱类型语言,必要时会自动转换类型,%d, %u 根本没必要%f:
    javascript 用
    numObj.toFixed
    numObj.toPrecision
    控制浮点数显示格式%x:
    numObj.toString(16)例如:(3).toFixed(7) 显示 3.0000000
    (123456789).toPrecision(3) 显示 1.23e+8
    '0x'+(33).toString(16) 显示 0x21
      

  5.   

    alexxing(赤铸) :
    一堆加号把一个完整的句子拆开,比如:
    "This is"+A+"'s "+B+", it is "+C...
    你认为很好阅读吗?用的引号,加号加起来比一对括号和逗号还要多。
    上面的句子有6个引号,5个加号。而
    sprintf("This is %s's %s, it is %s",A,B,C)
    相比起来,是不是要要看一些呢?
      

  6.   

    qiushuiwuhen(秋水无恨) :
    我现在知道完整的实现C中sprintf中的功能有些难度,不过,你能不能把你的那段程序改一下,添加%3.2f和%x之类的功能呢?%d,%u和对齐方式就算了。
      

  7.   

    <script>
    function sprintf(){
    /**********(qiushuiwuhen 2002-8-23)*************/
    if(ret=arguments[0]){
    var reg=/%(-)?(\d+)?\.?(\d+)?(\w)/g;
    var i=0,l=0;
    while(arr=reg.exec(ret)){
    if(++i>arguments.length)return null;
    switch(arr[4]){
    case "x":tmp=arguments[i].toString(16);break;
    case "f":if(arr[3]){tmp=arguments[i].toFixed(arr[3]);break;}
    case "s":
    case "d":
    default:tmp=arguments[i].toString();
    }
    if((l=Number(arr[2])-tmp.length)>0)tmp=arr[1]?tmp+new Array(l+1).join(" "):new Array(l+1).join(" ")+tmp;
    ret=ret.replace(arr[0],tmp);
    }
    return ret;
    }
    return null;
    }
    str=sprintf("%s,你的代号:%2d(%5x),测试格式:%-8.3f-%5.1f","秋水无恨",31415,31415,3.1415,3.1415)
    alert(str);
    </script>
      

  8.   

    各位都辛苦了。尤其感谢qiushuiwuhen(秋水无恨) 。