4. 字符串大总结
# 4. 字符串大总结
# 字符串简介
- length 属性返回字符串的长度:
let txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
let sln = txt.length;
- 查找字符串中的字符串 indexOf() 方法返回字符串中指定文本首次出现的索引(位置):
- lastIndexOf() 方法返回指定文本在字符串中最后一次出现的索引:
- 两种方法都接受作为检索起始位置的第二个参数。
let str = "The full name of China is the People's Republic of China.";
let pos = str.indexOf("China",0); //17
let pos = str.lastIndexOf("China"); //51 表示最后面一个china
- 两种方法,indexOf() 与 search(),是相等的。
这两种方法是不相等的。区别在于:
- search() 方法无法设置第二个开始位置参数。
- indexOf() 方法无法设置更强大的搜索值(正则表达式)。
- search()可以设置正则表达式进行搜索。
- 您将在正则表达式的章节学习到这些更强大的检索值。
const str = "The full 2 name 1369 of China is the People's Republic of China.";
const pos = str.search(/[0-9]/); //9
console.log(pos);
# 提取部分字符串
JavaScript 中 slice 、substr 和 substring的区别:
String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。
有三种提取部分字符串的方法:return new string
- slice(start, end)
- substring(start, end)
- substr(start, length)
# string.slice(start=0,end=string.length) 方法
返回一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符.
该方法设置两个参数:起始索引(开始位置),终止索引(结束位置)。
const str = "Apple, Banana, Mango";
const res = str.slice(7); //Banana, Mango (从索引7开始到字符串的最后边提取,返回提取后的字符串)
console.log(res);
let res1 = str.slice(7, 13);
console.log(res1); //Banana
# string.substring(start=0,end=string.length) 方法
substring() 类似于 slice()。不同之处在于 substring() 无法接受负的索引。
# substr(start=0,len=string.length-start) 方法
substr() 类似于 slice()。
不同之处在于第二个参数规定被提取部分的长度。
substr()会将第一个位置的负值参数加上字符串长度后转为正数
如果省略第二个参数,则该 substr() 将裁剪字符串的剩余部分。
# 替换字符串内容
replace() 方法用另一个值替换在字符串中指定的值:
# js字符与ASCII码互转的方法
大写字母A-Z对应的ASCII码值是65-90 小写字母a-z对应的ASCII码值是97-122
// 将字母转为ascii嘛的方法:
const str = "A";
str.charCodeAt(); // 65
const str1 = 'a';
str1.charCodeAt(); // 97
// 将ascii码转为对应字母的方法:
const num = 97;
String.fromCharCode(num); // 'a'
const num1 = 100;
String.fromCharCode(num1); // 'd'
# 从MDN系统学习String (opens new window)
示例 String.prototype.charAt() 下面的都是js内置对象中String对象的方法
String方法 | 描述 | 代码示例 |
---|---|---|
1. charAt(pos) | 返回特定位置的字符。 | str.charAt(index=0) |
1. charCodeAt() | 返回表示给定索引的字符的Unicode的值。 | |
1. codePointAt() | 返回使用UTF-16编码的给定位置的值的非负整数。 | |
1. concat() | 连接两个字符串文本,并返回一个新的字符串。 | |
1. includes() | 判断一个字符串里是否包含其他字符串。 | str.includes(searchString[, position=0]) 返回Boolean |
1. endsWith() | 判断一个字符串的是否以给定字符串结尾,结果返回布尔值。 | |
1. indexOf(str) | 从字符串对象中返回首个被发现的给定值的索引值,如果没有找到则返回-1。 | |
1. lastIndexOf() | 从字符串对象中返回最后一个被发现的给定值的索引值,如果没有找到则返回-1。 | |
1. localeCompare() | 返回一个数字表示是否引用字符串在排序中位于比较字符串的前面,后面,或者二者相同。 | |
1. match() | 使用正则表达式与字符串相比较。 | |
1. normalize() | 返回调用字符串值的Unicode标准化形式。 | |
1. padEnd() | 在当前字符串尾部填充指定的字符串, 直到达到指定的长度。 | 返回一个新的字符串。 |
1. padStart() | 在当前字符串头部填充指定的字符串, 直到达到指定的长度。 返回一个新的字符串。 | |
1. quote() | 设置嵌入引用的引号类型。 | |
1. repeat() | 返回指定重复次数的由元素组成的字符串对象。 | |
1. replace() | 被用来在正则表达式和字符串直接比较,然后用新的子串来替换被匹配的子串。 | |
1. search() | 对正则表达式和指定字符串进行匹配搜索,返回第一个出现的匹配项的下标。 | |
1. slice() | 摘取一个字符串区域,返回一个新的字符串。 | |
1. split() | 通过分离字符串成字串,将字符串对象分割成字符串数组。 | |
1. startsWith() | 断字符串的起始位置是否匹配其他字符串中的字符。 | |
1. substr() | 通过指定字符数返回在指定位置开始的字符串中的字符。 | |
1. substring() | 返回在字符串中指定两个下标之间的字符。 | basic = basic.substring(0, basic.length - 1); |
1.toLocaleLowerCase() | 根据当前区域设置,将符串中的字符转换成小写。对于大多数语言来说,toLowerCase的返回值是一致的。 | |
1.toLocaleUpperCase() | 据当前区域设置,将字符串中的字符转换成大写,对于大多数语言来说,toUpperCase的返回值是一致的。 | |
1. toLowerCase() | 将字符串转换成小写并返回。 | |
1. toSource() | 返回一个对象文字代表着特定的对象。你可以使用这个返回值来创建新的对象。重写 Object.prototype.toSource 方法。 | |
1. toString() | 返回用字符串表示的特定对象。重写 Object.prototype.toString 方法。 | |
1. toUpperCase() | 将字符串转换成大写并返回。 | |
1. trim() | 从字符串的开始和结尾去除空格。参照部分 ECMAScript 5 标准。 | |
1. trimStart() | 从字符串的右侧去除空格。 | |
1. trimLeft() | 从字符串的左侧去除空格。 | |
1. trimEnd() | ||
1. trimRight() | 从字符串的右侧去除空格。 | |
1. valueOf() | 返回特定对象的原始值,重写 Object.prototype.valueOf 方法。 |
String.prototype@@iterator
返回一个新的迭代器对象,该对象遍历字符串值的索引位置,将每个索引值作为字符串值返回。
HTML wrapper methods
下面的方法被限制使用,因为只对可用的HTML标签和属性提供部分支持。
将其他值转换成字符串
使用 String() 方法将其它对象转化为字符串可以被认为是一种更加安全的做法,虽然该方法底层使用的也是 toString() 方法,但是针对 null/undefined/symbols,String() 方法会有特殊的处理:
const outputStrings = [];
for (let i = 0, n = inputValues.length; i < n; ++i) {
outputStrings.push(String(inputValues[i]));
}