原生 String 类:
一个 length 属性、一个静态方法 String.fromCharCode() 、 17 个实例方法。(这里的称呼都是方便理解的方式,不是严格意义上 OO 的意思。)
17 个实例方法简表:
1、 charAt()
2、 charCodeAt() :返回字符串中指定位置处的字符编码( Unicode 码值)。
3、 concat() :把一个或多个值连接到字符串上
4、 indexOf()
5、 lastIndexOf()
6、 localeCompare() :用本地化的顺序比较字符串
7、 match(): 用正则表达式进行模式匹配
8、 replace()
9、 search() :检索字符串中与正则表达式匹配的子串
10、 slice(): 返回字符串的一个子串
11、 split()
12、 substr()
13、 substring()
14、 toLowerCase()
15、 toString()
16、 toUpperCase()
17、 valueOf()
Ext 对 String 的扩展
在 Ext.js 中对 String 类扩展了三个静态方法: escape() 、 leftPad() 、 format() ;
两个实例方法: toggle() 、 trim() 。
对 String 类的扩展程序比较简洁,不对废话,仅仅把 Ext 的源码注释和示例翻译一下:
- <SPAN style="FONT-SIZE: medium">
-
-
-
-
-
-
-
- Ext.applyIf(String, {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
escape : function(string) {
-
-
return string.replace(/('|\\)/g, "\\$1");
-
- },
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
leftPad : function (val, size, ch) {
-
-
var result = new String(val);
-
-
if(!ch) {
-
-
ch = " ";
-
- }
-
-
while (result.length < size) {
-
- result = ch + result;
-
- }
-
-
return result.toString();
-
- },
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
format : function(format){
-
-
var args = Array.prototype.slice.call(arguments, 1);
-
-
return format.replace(/\{(\d+)\}/g, function(m, i){
-
-
return args[i];
-
- });
-
- }
-
- });
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
String.prototype.toggle = function(value, other){
-
-
return this == value ? other : value;
-
- };
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
String.prototype.trim = function(){
-
-
var re = /^\s+|\s+$/g;
-
-
return function(){ return this.replace(re, ""); };
-
- }();</SPAN>
/**
* @String类
* 这些方法是对JavaScript中String类静态方法的扩展
*/
Ext.applyIf(String, {
/**
*将传进来的String中的’和\过滤掉
* @参数 {String} string 需要进行过滤的字符串
* @返回值 {String} 过滤好的字符串
* @静态方法
*/
escape : function(string) {
return string.replace(/('|\\)/g, "\\$1");
},
/**
* 用指定的字符填充一个字符串的左侧。对于格式化数字或者日期字符串,这
*一个非常有用的方法。用法示例:
* <pre><code>
var s = String.leftPad('123', 5, '0');
// s now contains the string: '00123'
</code></pre>
* @参数1 {String} string 原来的字符串
* @参数2 {Number} size 返回字符串的总长度
* @参数3 {String} char (optional) 填充的字符串 (默认用" "填充)
* @返回值 {String} 填充好的字符串
* @静态方法
*/
leftPad : function (val, size, ch) {
var result = new String(val);
if(!ch) {
ch = " ";
}
while (result.length < size) {
result = ch + result;
}
return result.toString();
},
/*允许你自定义含有占位符的字符串,并且传递任意数量的参数去替代这些占位符。*每一个占位符必须是唯一的,并且以{0}、{1}…这种格式递增。
*用法示例:
* <pre><code>
var cls = 'my-class', text = 'Some text';
var s = String.format('<div class="{0}">{1}</div>', cls, text);
// s now contains the string: '<div class="my-class">Some text</div>'
</code></pre>
* @参数1 {String} string 含有占位符,需要格式化的字符串
* @参数2 {String} value1 替代占位符 {0}的字符串
* @参数3 {String} value2 替代占位符{1}的字符串,以此类推
* @返回值 {String} 格式化好的字符串
* @静态方法
*/
format : function(format){
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/\{(\d+)\}/g, function(m, i){
return args[i];
});
}
});
/*工具方法,帮助你轻松地在两个字符串之间轮换取值。
*传入的第一个参数值会与当前字符串进行比较,如果它们相等,则把当前字符串赋值*为传入的第二个参数。否则,保持当前值不变。
*注意,该方法会返回一个新的字符串,而不是去改变当前字符串。
* <pre><code>
// alternate sort directions
sort = sort.toggle('ASC', 'DESC');
// instead of conditional logic:
sort = (sort == 'ASC' ? 'DESC' : 'ASC');
</code></pre>
* @参数1 {String} value 需要与当前值进行比较的字符串
* @参数2 {String} other 如当前字符串与第一个传入的参数相等,赋值给当前字符串的新值。
* @返回值 {String} 新的字符串
*/
String.prototype.toggle = function(value, other){
return this == value ? other : value;
};
/**
* 去掉字符串两端的空格,保持中间的空格不变。示例:
* <pre><code>
var s = ' foo bar ';
alert('-' + s + '-'); //alerts "- foo bar -"
alert('-' + s.trim() + '-'); //alerts "-foo bar-"
</code></pre>
* @返回值 {String} 去掉两端空格后的字符串
*/
String.prototype.trim = function(){
var re = /^\s+|\s+$/g;
return function(){ return this.replace(re, ""); };
}();
format() 方法的工作机制:
对 String 的扩展代码比较清晰,也很好理解,里面这个 format() 方法倒是有点味道,笔者思虑半天没有明白它的机制,知道的高手请指点,万谢!
分享到:
相关推荐
《仔仔细细分析Ext》是一本深入探讨JavaScript库Ext.js的专著,由大漠穷秋撰写。在本文中,我们将深入理解Ext的核心概念、机制和常见问题的解决方案。 1. **Ext.extend函数**:Ext.extend是Ext.js库中一个至关重要...
S 我的友仔", "UTF-8", "GBK"); ``` 另一个例子是将GB2312编码转换为Big5编码: ```php header("Content-Type: text/html; charset=big5"); echo mb_convert_encoding("你是我的伴侣", "big5", "GB2312"); ``` ...
public void generateBarcodeImage(String barcodeData, String outputFilePath) throws Exception { Code128Bean barcodeBean = new Code128Bean(); barcodeBean.setModuleWidth(UnitConv.in2mm(0.5f)); // 设置...
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf
内容概要:本文详细介绍了基于瞬时无功功率理论的三电平有源电力滤波器(APF)仿真研究。主要内容涵盖并联型APF的工作原理、三相三电平NPC结构、谐波检测方法(ipiq)、双闭环控制策略(电压外环+电流内环PI控制)以及SVPWM矢量调制技术。仿真结果显示,在APF投入前后,电网电流THD从21.9%降至3.77%,显著提高了电能质量。 适用人群:从事电力系统研究、电力电子技术开发的专业人士,尤其是对有源电力滤波器及其仿真感兴趣的工程师和技术人员。 使用场景及目标:适用于需要解决电力系统中谐波污染和无功补偿问题的研究项目。目标是通过仿真验证APF的有效性和可行性,优化电力系统的电能质量。 其他说明:文中提到的仿真模型涉及多个关键模块,如三相交流电压模块、非线性负载、信号采集模块、LC滤波器模块等,这些模块的设计和协同工作对于实现良好的谐波抑制和无功补偿至关重要。