Javascript中的Replace函数和C#中的Replace方法

这是一个一直没有关注到的问题,重点在于C#中的Replace是全局替换字符(串),而Javascript中只是替换到匹配到的第一个,同样的代码,Javascript如下:

var source='abc123abc456abc';
var desc=source.replace('abc','');
alert(desc);

结果为:123abc456abc。

在C#中代码如下:

string source = "abc123abc456abc";
string desc = source.Replace("abc", "");
Console.Write(desc);

结果为:123456

而相应的Javascript函数似乎应该写为:

var source='abc123abc456abc';
var desc=source.replace(/abc/g,'');

如此看来,C#实现反而令人难以理解了。于是反编译了一下String。

看来这应该是引入了.NET内核的函数,再使用MSIL反编译一下mscorlib.dll,找到Replace实现:

可以看出是内部调用了CIL类库,当然这个类库内部已经封装了,我们无法得知实现。

这里留作一个TODO。

posted @ 2011-03-11 09:07  walkingp  阅读(751)  评论(0编辑  收藏  举报