这是一个一直没有关注到的问题,重点在于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。