属性:length
方法:
match()
search()
replace()
slice() [汉]菜刀,切开
substring()
substr()
split() [汉]分离
indexOf()
lastIndexOf()
charAt()
charCodeAt()
fromCharCode()
//获取字符串字符个数 属性length var username = 'mackxu'; username.length; //5 //求一个字符串的字节长度 //假设:一个英文字符占用一个字节,一个中文字符占用两个字节 function countStringBytes(str) { var len = str.length; //字符个数 var bytes = len; //如果都是单字节字符 for (var i=0; i<len; i++) { if (str.charCodeAt(i)>255) bytes ++; //双字节字符 } return bytes; } /* * 字符串模式匹配方法 * match(string/pattern) 查找 返回matches数组 与pattern.exec()相同 * matches数组属性: * index 子字符串在字符串中的位置 * input 表示谁应用了这个正则表达式(即原字符串) * matches[0] 匹配到的子字符串 * matches[1] 捕获组匹配的字符串 * 存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。 * 注意:在全局检索模式g下,match()即不提供与子表达式匹配的文本的信息,也不声明每个匹配子串的位置。 * * search(string/pattern) 参数是字符串时与indexOf()作用一样 * 返回string中第一个与 regexp 相匹配的子串的起始位置。如果没有找到任何匹配的子串,则返回 -1。 * replace() 替换 * split() 字符串转换成数组 * String.prototype.split() 执行的操作与 Array.prototype.join 执行的操作是相反的。 */var text = 'cabt, bat, sat'; var pattern = /.at/; var matches = text.match('bat'); console.log(matches.index); //6 console.log(text.indexOf('bat')); //6 console.log(text.search('bat')); //6 /* * 字符串替换 * replace('old', 'new') * replace(pattern, 'new') * 第二个参数可以使用的特殊字符 * $& RegExp.lastMatch 匹配到的子字符串 * $` RegExp.leftContext * $' RegExp.rightContext * $n 匹配第n个捕获组子字符串 * replace(pattern, function(match, pos, oldString){ //... }) * 函数的参数: 子字符串, 子字符串的位置, 字符串 */ var text = 'cat, bat, sat'; //cAT, bat, sat 只能替换第一个 var result = text.replace('at', 'AT'); //cAT, bat, sat var result = text.replace(/at/, 'AT'); //cAT, bAT, sAT 替换全部 var result = text.replace(/at/g, 'AT'); //word(cat), word(bat), word(sat) var result = text.replace(/(.at)/g, "word($1)"); //word(, bat, sat), word(, sat), word() var result = text.replace(/(.at)/g, "word($')"); //去掉字符串两边的空格 String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ''); } /* * 字符串截取(获取子字符串) 不会修改原字符串 * slice(start, end) 截取范围[statr, end) 下标从0开始 * substring(start, end) 截取范围[statr, end) * substr(start, length) * 当传递的参数是负数时:slice()方法会将是负值的参数与字符串长度相加, 当start>end时返回'' * substring()方法会将所有负值参数转换为0, 当start>end时返回 [end, start) * substr()方法如果第一个参数负值加上字符串长度, 如果第二个参数负值将其替换成0 */ var str = 'good work'; var result = str.slice(-3); //ork var result = str.slice(-3, -5); //'' start>end var result = str.substring(2, 4); //od var result = str.substring(4, 2); //od [2, 4) var result = str.substring(-4, 2); //go [0, 2) var result = str.substring(2, -2); //go [0, 2) var result = str.substring(-4, -2); //'' [0, 0) var result = str.substr(-4, 1); //w (5, 1) var result = str.substr(4, -3); //'' (4, 0) console.log(result); /* * 字符串转成数组 split() * 数组转换成字符串 join() */ var str = 'good work'; var result = str.split(''); //字符数组 var result = str.split(/\s+/); //使用正则做分隔符 var result = str.split('oo'); //["g", "d work"] /* * 字符串查找 * indexOf() * lastIndexOf() * match() * search() */ //获取指定位置的字符 //charAt(i) 返回指定的字符 //charCodeAt(i) 返回指定字符的字符编码 //fromCharCode() String构造函数的静态方法 //作用是把字符编码转换成字符 /* * 字符串连接 * concat() String/Array * stringObject.concat(stringX,stringX,...,stringX) * stringObject.concat(array) array.toString(); * 使用 " + " 运算符来进行字符串的连接运算通常会更简便一些 * String.prototype.concat.apply(stringObject, array); */ var arr = ['a', 'b', 'c', 'd']; var str = ''; str = str.concat(arr); //a,b,c,d str = String.prototype.concat.apply(str, arr); //abcd /* * 字符串比较 * localeCompare() 字符串与字符串参数比较 返回数值 * str1.localeCompare(str2) */