/*
* 基本类型 string 和包装类型 String
* 都可以调用系统内置的方法 但是基本类型不能为自己添加属性和方法 包装类型可以为自己添加属性和方法
*/
// 定义基本类型 string
var box = "lee";
// 调用内置方法 substring()
box.substring(); // "lee"
// 添加属性和方法
box.name = 'zhang';
box.getName = function() {
return box.name;
}
box.name; // undefined
box.getName(); // Uncaught TypeError: box.getName is not a function(…)
// 定义包装类型 String
var box = new String("lee");
// 调用内置方法 substring()
box.substring(); // "lee"
// 添加属性和方法
box.name = 'zhang';
box.getName = function() {
return box.name;
}
box.name; // "zhang"
box.getName(); // "zhang"
// String对象常用api
var box = "Lee";
// constructor属性返回String的构造函数
box.constructor; // function String() { [native code] }
// charAt() 返回在指定位置的字符。
box.charAt(0); // "L"
// charCodeAt() 返回在指定的位置的字符的 Unicode 编码。
box.charCodeAt(0); // 76
box.charCodeAt(1); // 101
// fromCharCode() 从字符编码创建一个字符串。
String.fromCharCode(76, 101, 101); // "Lee"
// concat() 连接字符串。
box.concat(" is", " a", " teacher"); // "Lee is a teacher"
// toLowerCase() 把字符串转换为小写。
box.toLowerCase(); // "lee"
// toUpperCase() 把字符串转换为大写。
box.toUpperCase(); // "LEE"
// toLocaleLowerCase() 按照本地方式把字符串转换为小写。
box.toLocaleLowerCase(); // "lee"
// toLocaleUpperCase() 按照本地方式把字符串转换为大写。
box.toLocaleUpperCase(); // "LEE"
// match() 找到一个或多个正则表达式或者字符串的匹配。
box.match("L"); // ["L"]
box.match(/L/); // ["L"]
box.match("O"); // null
// search() 检索与正则表达式相匹配的值。
box.search("L"); // 0
box.search("O"); // -1
// replace() 替换与正则表达式或指定字符串匹配的子串。
box.replace("L", "Q"); // "Qee"
box.replace(/L/, "Q"); // "Qee"
// bold() 使用粗体显示字符串。
box.bold(); // "<b>Lee</b>"
// link() 将字符串显示为链接。
"baidu".link("http://www.baidu.com"); // "<a href="http://www.baidu.com">baidu</a>"
/*
* slice(start, end) 提取字符串的片断,并在新的字符串中返回被提取的部分。
* start 要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。
* end 要抽取的片段的结尾的下标。若未指定此参数,则默认截取到原字符串结尾。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。
* end 小于 start 返回空
*/
var box = "LeeLeeLee";
box.slice(1, 2); // "e"
box.slice( - 2); // "ee"
box.slice(2, -2); // "eLeeL"
box.slice( - 2, -1); // "e"
box.slice(2, 1); // ""
/*
* substring(beginIndex, endIndex) 提取字符串中两个指定的索引号beginIndex和endIndex之间的字符
* beginIndex可选参数 默认从0开始 endIndex可选参数 默认字符串长度
* 如果 beginIndex 比 endIndex 大 那么该方法在提取子串之前会先交换这两个参数
* substring() 和 slice() 的区别
* slice()更灵活可以接收负数做参数
* substring()不能接收负数做参数 如果参数为负数 直接转为0
*/
var box = "lee";
box.substring(0, 3); // "lee"
box.substring(); // "lee"
box.substring(3, 0); // "lee"
box.substring( - 2); // "lee"
box.substring(2, -1); // "le"
/*
* substr(start, length) 从start起始索引号提取字符串中length指定数目的字符
* start如果是非负数,那么该参数声明从字符串的头部开始算起的位置,0为第一个字符。
* start如果是负数,那么该参数声明从字符串的尾部开始算起的位置,-1为最后一个字符。
* length如果不写默认从start起始索引号提取到字符串最后一位。
* length如果是负数,直接转为0,返回空。
*/
var box = "lee";
box.substr(1, 2); // "ee"
box.substr( - 2); // "ee"
box.substr(2, -1); // ""
/*
* indexOf(searchvalue, fromindex) 从fromindex向后搜索字符串searchvalue
* fromindex不写默认为零 即 从开始位置搜索
* 返回首次搜索到的位置 找不到返回-1
*/
var box = "LLLEEE";
box.indexOf('O'); // -1
box.indexOf('L'); // 0
box.indexOf('L', 2); // 2
/*
* lastIndexOf(searchvalue, fromindex)
* 从fromindex向前搜索字符串searchvalue 返回首次搜索到的位置
*/
var box = "LLLEEE";
box.lastIndexOf('L', 3); // 2
/* stringObject.localeCompare(target) 用本地特定的顺序来比较两个字符串。
* 如果 stringObject 小于 target,则该方法返回 -1。
* 如果 stringObject 大于 target,则该方法返回 1。
* 如果两个字符串相等,该方法返回 0。
*/
"lee".localeCompare("lee"); // 0
"leh".localeCompare("lee"); // 1
"led".localeCompare("lee"); // -1