有些时候,我们确实需要在JavaScript中进行字符串替换,类似于C#中的String.Format()方法一样,只不过这种格式化替换只局限于对由'{0}','{1}','{2}'...所组成的“占位符”进行字符串替换,而并不会像C#中可以进行字符串格式化替换。这会大量简化我们的代码,使得程序结构变得更加清晰。众所周知,JavaScript中的replace方法默认只能对第一个匹配到的字符串进行替换,如果给定的字符串中存在多个匹配项,则除了第一个匹配项之外其余的部分都不会被替换。因此我们可以借助于正则表达式来进行替换。
来看看下面这个方法:
if (!String.prototype.format) { String.prototype.format = function () { var args = arguments; return this.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match ; }); }; }
如何使用?
"{0} is dead, but {1} is alive! {0} {2}".format("ASP", "ASP.NET");
ASP is dead, but ASP.NET is alive! ASP {2}
注意'{2}'没有被替换,因为参数列表中没有给定对应的值。在该方法中,没有对参数列表和占位符进行严格限制。也就是说,允许占位符中的数字不连续或者一定要从0开始,而且参数列表的数量并不一定要与占位符中的数字完全对应。只对正则表达式匹配到的项进行查找替换。所以该方法可以满足一些基本应用。
这里还有另外一个JavaScript类库。
String.js
<script src="script/string.js" type="text/javascript"></script> <script type="text/javascript"> var a = String.format("Hello {0}!", "world"); alert(a); </script>
另外,我的另一篇博客中有关于如何在JavaScript中对字符串进行Trim操作的例子:
http://www.cnblogs.com/jaxu/archive/2009/03/12/1409395.html
本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/p/3289172.html,如需转载请自行联系原作者