什么是扩展内置对象的有用 JavaScript 方法?
IT技术
javascript
2021-02-20 23:11:54
6个回答
字符串全部替换:
String.prototype.replaceAll = function(search, replace)
{
//if replace is not sent, return original string otherwise it will
//replace search string with 'undefined'.
if (replace === undefined) {
return this.toString();
}
return this.replace(new RegExp('[' + search + ']', 'g'), replace);
};
var str = 'ABCADRAE';
alert(str.replaceAll('A','X')); // output : XBCXDRXE
这是String.replaceAll()
方法的另一种实现
String.prototype.replaceAll = function(search, replace) {
if (replace === undefined) {
return this.toString();
}
return this.split(search).join(replace);
}
这个和这里发布的解决方案之间的区别在于这个实现正确处理字符串中的正则表达式特殊字符以及允许单词匹配
Array.prototype.indexOf = Array.prototype.indexOf || function (item) {
for (var i=0; i < this.length; i++) {
if(this[i] === item) return i;
}
return -1;
};
用法:
var list = ["my", "array", "contents"];
alert(list.indexOf("contents")); // outputs 2
James Padolsey 提供了大量的 String.prototype 函数
https://github.com/padolsey/string.prototype
这些包括:
- 骆驼化
- 包含
- 数数
- 括
- 提炼
- 为每个
- 每个词
- 联动
- 许多
- 随机化
- 消除
- 撤销
- 缩短
- 种类
- 到DOM
- 修剪
- 裹
字符串格式
String.prototype.format = function (values) {
var regex = /\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g;
var getValue = function (key) {
if (values == null || typeof values === 'undefined') return null;
var value = values[key];
var type = typeof value;
return type === 'string' || type === 'number' ? value : null;
};
return this.replace(regex, function (match) {
//match will look like {sample-match}
//key will be 'sample-match';
var key = match.substr(1, match.length - 2);
var value = getValue(key);
return value != null ? value : match;
});
};
用法:
alert('Program: {key1} {key2}'.format({ 'key1' : 'Hello', 'key2' : 'World' })); //alerts Program: hello world