一、创建String实例对象
let string1 = String(123);
let string2 = new String(123);
//模板字面量
let author = 'surui';
let string3 = String(`Hello ${author}`);
return string1+string3;
二、String实例属性
1.String.prototype属性
表示 String原型对象,所有 String 的实例都继承自 String.prototype,任何String.prototype上的改变都会影响到所有的 String实例
2.length属性返回字符串中字符编码单元的数量
/**
* length属性:返回字符串中字符编码单元的数量
* 空字符串的 length 为 0
*/
let string1 = "this string has a length of";
let string2 = string1 + string1.length;
return string2;
三、String实例方法
1.charAt()方法从一个字符串中返回指定的字符
/**
* charAt() 方法从一个字符串中返回指定的字符
* 语法:str.charAt(index)
*
* index一个介于0 和字符串长度减1之间的整数。 (0~length-1)
* 如果没有提供索引,charAt() 将使用0。
*/
let string1 = "Hello String";
let char = string1.charAt(2);
return char;
2.concat()方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。不影响原字符串
/**
* concat() 方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回
* str.concat(string2, string3[, ..., stringN])
*
* string2...stringN 和原字符串连接的多个字符串
* concat 方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回; concat 方法并不影响原字符串
*/
let string1 = "Hello";
let string2 = string1.concat(' String,','js is funny');
return string2
3.padEnd()方法会从当前字符串的末尾(右侧)用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串
/**
* padEnd() 方法会用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串
* 从当前字符串的末尾(右侧)开始填充
* str.padEnd(targetLength [, padString])
*
* targetLength 当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
* padString 可选填充字符串。
* 如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断
* 此参数的缺省值为 " "(空格)
*
* 返回值:在原字符串末尾填充指定的填充字符串直到目标长度所形成的新字符串
*/
let string = 'abc';
string.padEnd(10); //"abc "
string.padEnd(10,'foo'); //"abcfoofoof"
string.padEnd(6,'123456'); //"abc123"
return string.padEnd(1); //"abc"
4.padStart()方法会从当前字符串的开始(左侧)用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串
/**
* padStart() 方法用另一个字符串填充当前字符串(重复,如果需要的话),以便产生的字符串达到给定的长度
* 填充从当前字符串的开始(左侧)应用的
* str.padStart(targetLength [, padString])
*
* targetLength 当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。
* padString 可选填充字符串。
* 如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断
* 此参数的缺省值为 " "(空格)
*
* 返回值:在原字符串开头填充指定的填充字符串直到目标长度所形成的新字符串
*/
let string = 'abc';
string.padStart(10); //" abc"
string.padStart(10,'foo'); //"foofoofabc"
string.padStart(6,'123456'); //"123abc"
return string.padStart(1); //"abc"
5.repeat()构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本。不影响原字符串
/**
* repeat() 构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本
* let resultString = str.repeat(count);
* count 介于0和正无穷大之间的整数 : [0, +∞) 。表示在新构造的字符串中重复了多少遍原字符串。
*
* 返回值:包含指定字符串的指定数量副本的新字符串
* RangeError: 重复次数不能为负数;重复次数必须小于 infinity,且长度不会大于最长的字符串
*/
let string = 'abc';
string.repeat(-1); // RangeError: repeat count must be positive and less than inifinity
string.repeat(0); // ""
string.repeat(2); // "abcabc"
string.repeat(3.5); // "abcabcabc"
string.repeat(1/0); // RangeError: repeat count must be positive and less than inifinity
6.startsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“开头”的,根据判断结果返回 true 或 false
/**
* startsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“开头”的,根据判断结果返回 true 或 false
* str.startsWith(searchString [, position]);
*
* searchString 要搜索的子字符串
* position 在 str 中搜索 searchString 的开始位置,默认值为 0,也就是真正的字符串开头处。
*/
let string = "To be, or not to be, that is the question.";
string.startsWith("To be"); // true
string.startsWith("not to be"); // false
return string.startsWith("not to be", 10); // true
7.endsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回 true 或 false
/**
* endsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回 true 或 false。
* str.endsWith(searchString [, position]);
*
* searchString 要搜索的子字符串。
* position 在 str 中搜索 searchString 的结束位置,默认值为 str.length,也就是真正的字符串结尾处。
*/
let string = "To be, or not to be, that is the question.";
string.endsWith('question.'); //true
string.endsWith('question'); //false
return string.endsWith('to be', 19); //true
8.includes()方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回true或false
/**
* includes() 方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回true或false。
* str.includes(searchString[, position])
*
* searchString 要在此字符串中搜索的字符串
* position 可选。从当前字符串的哪个索引位置开始搜寻子字符串;默认值为0。
*/
let string = 'To be, or not to be, that is the question.';
string.includes('To be'); // true
string.includes('question'); // true
string.includes('or not', 10); // false
string.includes('To be', 1); // false
string.includes('TO BE'); // false
9.indexOf()方法返回调用String对象中第一次出现的指定值的索引,开始在 fromIndex进行搜索。如果未找到该值,则返回-1
/**
* indexOf() 方法返回调用 String 对象中第一次出现的指定值的索引,开始在 fromIndex进行搜索。
如果未找到该值,则返回-1。
* str.indexOf(searchValue[, fromIndex])
*
* searchValue 一个字符串表示被查找的值。
* fromIndex 可选 表示调用该方法的字符串中开始查找的位置。可以是任意整数。默认值为 0。
* 如果 fromIndex < 0 则查找整个字符串(如同传进了 0)。
* 如果 fromIndex >= str.length,则该方法返回 -1,除非被查找的字符串是一个空字符串,此时返回 str.length。
*/
let string = 'Blue Blue Whale Whale';
string.indexOf("Blue"); //0
string.indexOf("Whale",-1); //10
string.indexOf("Blue",5); //5
string.indexOf("Whale",20); //-1
return string.indexOf("", 22); //21
10.lastIndexOf()方法返回指定值在调用该方法的字符串中最后出现的位置,从 fromIndex 处开始从后向前查找,如果未找到该值,则返回-1
/**
* lastIndexOf() 方法返回指定值在调用该方法的字符串中最后出现的位置,
* 如果没找到则返回 -1。从该字符串的后面向前查找,从 fromIndex 处开始。
* str.lastIndexOf(searchValue[, fromIndex])
*
* searchValue 一个字符串,表示被查找的值。
* fromIndex 从调用该方法字符串的此位置处开始查找。可以是任意整数。默认值为 str.length。
* 如果为负值,则被看作 0。如果 fromIndex > str.length,则 fromIndex 被看作 str.length。
*/
let string = 'Blue Blue Whale Whale';
string.lastIndexOf("Blue"); //5
string.lastIndexOf("Whale",-1); //-1
string.lastIndexOf("Blue",4); //0
return string.lastIndexOf("Whale",22); //16
11.search()方法执行正则表达式和 String对象之间的一个搜索匹配
/**
* search() 方法执行正则表达式和 String对象之间的一个搜索匹配
* str.search(regexp)
*
* 如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引。否则,返回 -1。
*/
let string = "1234search regexp";
let midstring;
if (string.search(/[surui]*/) != -1) {
midstring = " contains ";
} else {
midstring = " does not contain ";
}
return string + midstring; //1234search regexp contains
12.match()当一个字符串与一个正则表达式匹配时, match()方法检索匹配项
/**
* 当一个字符串与一个正则表达式匹配时, match()方法检索匹配项
* str.match(regexp);
*
* regexp 一个正则表达式对象
* 如果传入一个非正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp
* 如果你未提供任何参数,直接使用 match() ,那么你会得到一个包含空字符串的 Array :[""]
*
* 存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g
* 如果没找到匹配结果返回 null
*/
let string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
let regexp = /[A-E]/gi;
let matches_array = string.match(regexp);
return matches_array;// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
13.replace()方法返回一个由替换值替换一些或所有匹配的模式后的新字符串,不影响原字符串
/**
* replace() 方法返回一个由替换值替换一些或所有匹配的模式后的新字符串。
* 模式可以是一个字符串或者一个正则表达式, 替换值可以是一个字符串或者一个每次匹配都要调用的函数。
* str.replace(regexp|substr, newSubStr|function)
*
* 返回值:一个部分或全部匹配由替代模式所取代的新的字符串
*/
function replacer(match, p1, p2, p3, offset, string) {
return [p1, p2, p3].join(' - ');
}
let newString = 'abc12345#$*%'.replace(/(\D*)(\d*)(\W*)/, replacer);
console.log(newString); // abc - 12345 - #$*%
let re = /apples/gi;
let string = "Apples are round, and apples are juicy.";
return string.replace(re, "oranges"); // "oranges are round, and oranges are juicy."
14.slice()方法提取一个字符串的一部分,并返回一新的字符串
/**
* slice() 方法提取一个字符串的一部分,并返回一新的字符串
* str.slice(beginSlice[, endSlice])
*
* beginSlice 从该索引(以 0 为基数)处开始提取原字符串中的字符。
* 如果值为负数,会被当做 sourceLength + beginSlice 看待,这里的sourceLength 是字符串的长度 (例如, 如果beginSlice 是 -3 则是: sourceLength - 3)
* endSlice 可选。在该索引(以 0 为基数)处结束提取字符串。
* 如果省略该参数,slice会一直提取到字符串末尾。
* 如果该参数为负数,则被看作是 sourceLength + endSlice,这里的 sourceLength 就是字符串的长度(例如,如果 endSlice 是 -3,则是, sourceLength - 3)。
*
* 返回值:返回一个从原字符串中提取出来的新字符串
*/
let string1 = 'The morning is upon us.';
let string2 = string1.slice(4, -2);//morning is upon u
let string3 = string1.slice(-3); //us.
let string4 = string1.slice(-3,-2); //u
let string5 = string1.slice(0,-1);//The morning is upon us
return string5;
15.substr()方法返回一个字符串中从指定位置开始到指定字符数的字符
/**
* substr() 方法返回一个字符串中从指定位置开始到指定字符数的字符
* str.substr(start[, length])
*
* start 开始提取字符的位置
* 如果为负值,则被看作 strLength + start,其中 strLength 为字符串的长度(例如,如果 start 为 -3,则被看作 strLength-3)
* length 可选。提取的字符数
*/
let string = "abcdefghij";
let string1 = string.substr(1,2); //"bc"
let string2 = string.substr(-3,3); //"hij"
let string3 = string.substr(-20,2); //"ab"
16.substring()方法返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集
/**
* substring() 方法返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集
* indexStart 一个 0 到字符串长度之间的整数
* indexEnd 可选。一个 0 到字符串长度之间的整数
*
* 返回值:包含给定字符串的指定部分的新字符串
*/
let string = "abcdefghij";
let string1 = string.substring(1,3); //"bc" [1,3)
let string2 = string.substring(3,7); //"defg"
let string3 = string.substring(2,2); //""
17.split()方法使用指定的分隔符字符串将一个String对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置
/**
* split() 方法使用指定的分隔符字符串将一个String对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置
* str.split([separator[, limit]])
*
* separator 指定表示每个拆分应发生的点的字符串
* limit 一个整数,限定返回的分割片段数量
*
* 返回值:返回源字符串以分隔符出现位置分隔而成的一个 Array
*/
let string = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec";
let stringArr = string.split(','); //["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
18.toLowerCase()会将调用该方法的字符串值转为小写形式,并返回
/**
* toLowerCase() 会将调用该方法的字符串值转为小写形式,并返回
* str.toLowerCase()
*
* 返回值:一个新的字符串,字符串值转换为小写形式
*/
let string = "ALPHABET";
let newString = string.toLowerCase(); //"alphabet"
return newString;
19.toUpperCase()将调用该方法的字符串值转换为大写形式,并返回
/**
* toUpperCase() 将调用该方法的字符串值转换为大写形式,并返回
* str.toUpperCase()
*
* 返回值:一个新的字符串,字符串值转换为大写形式
*/
let string = "alphabet";
let newString = string.toLowerCase(); //"ALPHABET"
return newString;
20.trim()方法会从一个字符串的两端删除空白字符
/**
* trim() 方法会从一个字符串的两端删除空白字符
* str.trim()
*
* trim() 方法并不影响原字符串本身,它返回的是一个新的字符串
*/
let string = ' foo ';
return string.trim(); // 'foo'
21.toString()方法返回指定对象的字符串形式
/**
* toString() 方法返回指定对象的字符串形式
* str.toString()
*
* String 对象覆盖了Object 对象的 toString 方法;并没有继承 Object.toString()。
* 对于 String 对象,toString 方法返回该对象的字符串形式,和 String.prototype.valueOf() 方法返回值一样
*/
let string = new String("Hello world");
return string.toString(); // "Hello world"
22.valueOf()方法返回一个String对象的原始值
/**
* valueOf() 方法返回一个String对象的原始值
* str.valueOf()
*
* String 对象的 valueOf 方法返回一个String对象的原始值。该值等同于String.prototype.toString()
*/
let string = new String("Hello world");
return string.valueOf(); // "Hello world"