Javascript:在字符串中转义%d

时间:2011-09-03 17:10:45

标签: javascript node.js

我在Node.js中有以下代码:

var str = '',
    ch;

for(/*standard for loop*/){
 // some code ...

 ch = '%' + buffer[i].toString(16);

 str += ch;
} 

现在当buffer[i].toString(16)返回时,我们说d6,结果字符串不包含%d6,而是NaN6

现在我知道%d用于C的sprinf,但afaik JavaScript和Node都有sprintf或等效函数。

我的字符串中需要%d6,那么我该怎么办才能阻止JS自动将%d(和其他人,如%f)转换为NaN?

3 个答案:

答案 0 :(得分:0)

你不能为你自己的purproses使用toString方法,因为JS已经拥有了这个名字的自己的函数。

  1. 将firefox更新到最新版本。还要确保你使用的是firefox。
  2. 我测试了,你的解决方案应该可行。请提醒()一切。
  3. 输出是什么:

    ch = '%' + buffer[i].toString(16);
    alert(ch);
    alert(buffer[i]);
    alert(buffer[i].toString(16));
    

答案 1 :(得分:0)

如果我们进行快速测试,则错误不在您粘贴的代码中:

function test()
{
  var stuff = 214;
  var str = '', ch;

  ch = '%' + stuff.toString(16);
  alert(ch);
} 

我们看到我们想要返回的内容实际上是返回的(%d6)。

NaN代表的不是数字,你确定缓冲区数组中的数字是多少?你在ch上调用任何其他方法/函数吗?

答案 2 :(得分:0)

Node的console.log() - 用于输出的标准函数 - 我用来打印出结果的行为就像printf一样,实际记录了(http://nodejs.org/docs/v0.4.11/api/stdio.html#console.log)。愚蠢的我,感谢所有人让我找到解决方案。

sys.puts()打印预期的字符串。