1 String属性
// JavaScript中字符串有一个常用的属性length,就是获取字符串长度。
var str = 'hello world';
str.length; //长度是11
2 String常用方法
// chartAt(index) 返回指定位置的字符。
// @param {Number} index 必须。表示字符串中某个位置的数字,取值范围0~String.length。
// 如果index不在取值范围之间,则返回一个空的字符串。
// @return {String} 返回index位置的字符。
// Example
var str = 'Hello world';
str.charAt(6); //返回 w
// chartCodeAt(index) 返回在指定的位置的字符的Unicode编码。
// @param {Number} index 必须。表示字符串中某个位置的数字,取值范围0~String.length。
// 如果index不在取值范围之间,则返回一个空的字符串。
// @return {Number} 返回index位置字符的Unicode编码。
// Example
var str = 'Hello world';
str.charAt(6); //返回 119
// concat(str1, str2, ..., strX) 连接一个或多个字符串。
// @param {String} strX 必须。将要连接的一个或多个字符串对象,该参数可以有多个。
// @return {String} 返回连接后的字符串。该函数并不会改变原有的字符串,而是创建新的字符串。
// JavaScript中字符串的连接可以用+实现。
// Example
var str = 'Hello ';
var str2 = 'Kevin ';
var str3 = 'Welcome to';
str.concat(str2, str3); //返回 Hello Kevin Welcome to。其中str、str1和str2的值没有改变。
// indexOf(searchValue, fromIndex) 从前向后搜索,获取指定字符串值在字符串中首次出现的位置。
// @param {String} searchValue 必需。规定需检索的字符串值,大小写敏感。
// @param {Number} fromIndex 可选。开始检索的位置,取值范围0~String.length-1。
// 如省略该参数,则将从字符串的首字符开始检索。
// @return {Number} 返回searchValue首次出现的位置,如果没有查到则返回-1。
// Example
var str = 'Hello World, Hello World.';
str.indexOf('Wo'); //返回 6
str.indexOf('js'); //返回 -1
// lastIndexOf(searchValue, fromIndex) 从后向前搜索,获取指定字符串值在字符串中最后出现的位置。
// @param {String} searchValue 必需。规定需检索的字符串值,大小写敏感。
// @param {Number} fromIndex 可选。开始检索的位置,取值范围0~String.length-1。
// 如省略该参数,则将从字符串的最后一个字符开始检索。
// @return {Number} 返回searchValue最后一次出现的位置,如果没有查到则返回-1。
// Example
var str = 'Hello World, Hello World.';
str.lastIndexOf('Wo'); //返回 19
str.lastIndexOf('js'); //返回 -1
// localeCompare(compare) 用本地特有的顺序比较字符串。
// @param {String} compare 必需。需要比较的字符串。
// @return {Number} 如果compare大,返回小于0的数。如果compare小,返回大于0的数。如果相等,返回0。
// Example
var str = 'bbb';
str.localeCompare('aaa'); //返回 1
str.localeCompare('ccc'); //返回 -1
str.localeCompare('bbb'); //返回 0
// match(pattern) 根据字符串或正则表达式检索。
// @param {String/RegExp} pattern 必需。可以是字符串或正则表达式。
// @return {Array} 如果匹配返回存放匹配结果的数组,否则返回null。
// Example
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var regexp = /[A-E]/gi;
str.match(regexp); //返回 ["A", "B", "C", "D", "E", "a", "b", "c", "d", "e"]
var value1 = 'a';
str.match(value1); //返回 ["a"]
var value2 = 'javascript';
str.match(value2); //返回 null
// replace(pattern, replacement) 用一些字符替换另一些字符。
// @param {String/RegExp} pattern 必需。可以是字符串或正则表达式。
// @param {String/Function} replacement 必须。可以是字符串或者函数。
// @return {String} 返回替换后的新字符串,该方法不改变原有字符串。
// Example
var re = /apples/gi;
var str = 'Apples are round, and apples are juicy.';
str.replace(re, 'oranges'); //返回 oranges are round, and oranges are juicy.
// search(pattern) 检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
// @param {String/RegExp} pattern 必需。可以是字符串或正则表达式。
// @return {Number} 如果检索成功,返回第一个与pattern相匹配字符串的起始位置。如果失败返回-1。
// Example
var str="Hello World!";
str.search(/World/); //返回 6
// slice(start, end) 提取字符串start和end之间的部分。
// @param {Number} start 必需。子字符串的起始下标。如果是负数,则从字符串的尾部开始算起的位置。
// 也就是说,-1是字符串的最后一个字符,-2是倒数第二个字符,以此类推。
// start的绝对值不能大于String.length - 1。
// @param {Number} end 可选。子字符串的结尾下标。若未指定此参数,则子串从start到原字符串结尾。
// 如果是负数,则从字符串的尾部开始计算。end的绝对值不能大于String.length - 1。
// 如果start是正数,end也必须是正数。如果start是负数,end也必须是负数。并且end必须大于start。
// @return {String} 返回start和end之间的字符串。
// Example
var str = 'Apples are round, and apples are juicy.';
str.slice(1, 10); //返回 pples are
str.slice(-10, -1); //返回 are juicy
// split(separator, limit) 把字符串分割成字符串数组。
// @param {String/RegExp} separator 必需。可以是字符串或正则表达式。
// @param {Number} limit 可选。返回数组的最大长度。如果设置该参数,返回的数组最大长度为limit。
// 如果没有设置该参数,整个字符串都会被分割,不考虑返回数组的长度。
// @return {Array} 数组字符串。返回的数组中的字串不包括separator自身。
// Example
var str="张三|李四|王五|赵六";
str.split('|'); //返回 ["张三", "李四", "王五", "赵六"]
str.split('|', 3); //返回 ["张三", "李四", "王五"]
// substr(start, length) 获取从start开始,长度为length的子字符串。
// @param {Number} start 必需。子字符串的起始下标。如果是负数,则从字符串的尾部开始算起的位置。
// 也就是说,-1是字符串的最后一个字符,-2是倒数第二个字符,以此类推。
// start的绝对值不能大于String.length - 1。
// @param {Number} length 可选。子字符串的长度。若未指定此参数,则子串从start到原字符串结尾。
// length的值必须大于0。
// @return {String} 返回子字符串。
// Example
var str = '张三|李四|王五|赵六';
str.substr(3, 10); //返回 李四|王五|赵六
str.substr(-5, 10); //返回 王五|赵六
// substring(start, end) 提取字符串start和end之间的部分。
// @param {Number} start 必需。子字符串的起始下标,非负整数。start的不能大于String.length-1。
// @param {Number} end 可选。子字符串的结尾下标,非负整数。若未指定此参数,则子串从start到原字符串结尾。
// @return {String} 返回start和end之间的字符串。
// Example
var str = '张三|李四|王五|赵六';
str.substring(1); //返回 三|李四|王五|赵六
str.substring(1, 10); //返回 三|李四|王五|赵
// toLocaleLowerCase() 按照本地方式把字符串转换成小写。
// 只有少数几种语言有本地特有的小写。大部分语言与toLowerCase()一样。
// @return {String} 返回小写字符串。
// Example
var str = 'ABCEDEFG';
str.toLocaleLowerCase(); //返回 abcedefg
// toLocaleUpperCase() 按照本地方式把字符串转换成大写。
// 只有少数几种语言有本地特有的大写。大部分语言与toUpperCase()一样。
// @return {String} 返回大写字符串。
// Example
var str = 'abcdefg';
str.toLocaleUpperCase(); //返回 ABCEDEFG
// toLowerCase() 把字符串转换成小写。
// @return {String} 返回小写字符串。
// Example
var str = 'ABCEDEFG';
str.toLowerCase(); //返回 abcedefg
// toUpperCase() 把字符串转换成大写。
// @return {String} 返回大写字符串。
// Example
var str = 'abcdefg';
str.toUpperCase(); //返回 ABCEDEFG
3 String静态方法
// fromCharCode(code1, code2, ..., codeX) 返回在指定的位置的字符的Unicode编码。
// @param {Number} codeX 必须。一个或多个字符的Unicode编码,该参数可以有多个。
// @return {String} 返回字符串。
// Example
var code1 = 65, code2 = 66, code3 = 67;
String.fromCharCode(code1, code2, code3); //返回 ABC
4 String未提供的trim方法
在JavaScript中需要用到trim的地方很多,但是JavaScript又没有独立的trim函数或者方法可以使用。有些浏览器如chrome、ie9、ie10、firefox都已经提供了内置的trim方法。在上述浏览器中,对String可以直接使用trim。
var str = ' 张三 ';
str.trim(); //返回 张三
在ie6、ie7、ie8系列浏览器中,没有内置的trim方法,可以使用第三方框架提供的trim方法。
//Ext的trim方法
var str = ' 张三 ';
Ext.String.trim(str); //返回 张三
//JQuery的trim方法
var str = ' 张三 ';
$.trim(str); //返回 张三
也可以自己实现trim方法,下面的trim方法摘自Ext源码。
// 字符串trim函数
// @param {String} str 需要去掉首尾空格的字符串。
// @return {String} 返回去掉首尾空格后的字符串。
function trim(str){
var trimRegex = /^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g;
return str.replace(trimRegex, "");
}