使用字符串的 charAt() 和 chatCodeAt() 方法,可以根据参数(非负整数的下标值)返回指定位置的字符或字符编码。
对于 charAt() 方法来说,如果参数不在 0 和字符串的 length-1 之间,则返回空字符串;而对于 charCodeAt() 方法来说,则返回 NaN,而不是 0 或空字符串。
下面示例为 String 类型扩展一个原型方法,用来把字符串转换为数组。在函数中使用 charAt() 方法读取字符串中每个字符,然后装入一个数组并返回。
String.prototype.toArray = function () { //把字符串转换为数组
var 1 = this.length; a = []; //获取当前字符串长度,并定义空数组
if (1) { //如果存在则执行循环操作,预防空字符串
for (var i = 0; i < 1; i ++) { //遍历字符串,枚举每个字符
a.push(this.charAt(i)); //把每个字符按顺序装入数组
return a; //返回数组
应用原型方法:
var s = "abcdefghijklmn".toArray(); //把字符串转换为数组
for (var i in s) { //遍历返回数组,显示每个字符
console.log(s[i]);
查找字符串
使用字符串的 indexOf() 和 lastIndexOf() 方法,可以根据参数字符串,返回指定子字符串的下标位置。这两个方法都有两个参数,说明如下。
第一个参数为一个子字符串,指定要查找的目标。
第二个参数为一个整数,指定查找的起始位置,取值范围是 0~length-1。
对于第二个参数来说,需要注意一下几个特殊情况。
如果值为负数,则视为 0,相当于从第一个字符开始查找。
如果省略了这个参数,也将从字符串的第一个字符开始查找。
如果值大于等于 length 属性值,则视为当前字符串中没有指定的子字符串,返回 -1。
下面代码查询字符串中首个字母 a 的下标位置。
var s = "
JavaScript
";
var i = s.indexOf("a");
console.log(i); //返回值为1,即字符串中第二个字符
indexOf() 方法只返回查找到的第一个子字符串的起始下标值,如果没有找到则返回 -1。
下面代码查询 URL 字符串中首个字母 n 的下标位置。
var s = "c.biancheng.net";
var a = s.indexOf("biancheng"); //返回值为3,即第一个字符n的下标位置
如果要查找下一个子字符串,则可以使用第二个参数来限定范围。
下面代码分别查询 URL 字符串中两个点号字符下标的位置。
var s = "c.biancheng.net";
var b = s.indexOf("."); //返回值为1,即第一个字符.的下标位置
var e = s.indexOf(".", b + 1); //返回值为11,即第二个字符.的下标位置
indexOf() 方法是按照从左到右的顺序进行查找的。如果希望从右到左来进行查找,则可以使用 lastIndexOf() 方法来查找。
下面代码按从右到左的顺序查询 URL 字符串中最后一个点号字符的下标位置。
var s = "c.biancheng.net";
var n = s.lastIndexOf("."); //返回值为11,即第二个字符.的下标位置
lastIndexOf() 方法的查找顺序是从右到左但是其参数和返回值都是根据字符串的下标按照从左到右的顺序来计算的,即字符串第一个字符下标值始终都是 0,而最后一个字符的下标值始终都是 length-1。
lastIndexOf() 方法的第二个参数指定开始查找的下标位置,但是,将从该点开始向左查找,而不是向右查找。
var s = "http://c.biancheng.net";
var n = s.lastIndexOf(".", 11); //返回值是8,而不是18
其中第二个参数值 11 表示字符 a (第一个)的下标位置,然后从左侧开始向左查找,所以就返回第一个点号的位置。如果找到,则返回第一次找到的字符串的起始下标值。
var s = "http://c.biancheng.net";
var n = s.lastIndexOf("c"); //返回值为7
如果没有设置第二个参数,或者为参数负值,或者参数大于等于 length,则将遵循 indexOf() 方法进行操作。
搜索字符串
search() 方法和 indexOf() 的功能是相同的,查找指定字符串第一次出现的位置。但是 search() 方法仅有一个参数,定义匹配模式。该方法没有 lastIndexOf() 的反向检索功能,也不支持全局模式。
下面代码使用 search() 方法匹配斜杠字符在 URL 字符串的下标位置。
var s = "c.biancheng.net";
n="s.search("//");"
search() 方法参数定义:
search() 方法的参数为正则表达式(RegExp 对象)。如果参数不是 RegExp 对象,则
Java
Script 会使用 RegExp() 函数把它转换为 RegExp 对象。
search() 方法遵循从左到右的查找顺序,并返回第一个匹配的子字符串的起始下标位置值。如果没有找到,则返回 -1。
search() 方法无法查找指定的范围,始终返回的第一个匹配子字符串的下标值,没有 indexOf() 方法灵活。
匹配字符串
match() 方法能够找出所有匹配的子字符串,并以数组的形式返回。
下面代码使用 match() 方法找到字符串中所有字母 c,并返回它们。
var s = "http://c.biancheng.net";
var a = s.match(/c/n); //全局匹配所有字符c
console.log(a); //返回数组[c,c]。
match() 方法返回的是一个数组,如果不是全局匹配,那么 match() 方法只能执行一次匹配。例如,下面匹配模式没有 n 的修饰符,只能够执行一次匹配,返回仅有一个元素 c 的数组。
var a = s.match(/c/); //返回数组[h]
如果没有找到匹配字符,则返回 null,而不是空数组。
当不执行全局匹配时,如果匹配模式包含子表达式,则返回子表达式匹配的信息。
下面代码使用 match() 方法匹配 URL 字符串中所有点号字符。
var s = "http://c.biancheng.net";
var a = s.match(/(\.).*(\.).*(\.)/ ); //执行一次匹配检索
console.log(a.length);
console.log(a[0]);
console.log(a[1]);
console.log(a[2]);
console.log(a[3]);
在这个正则表达式 “/(\.).*(\.).*(\.)/”中,左右两个斜杠是匹配模式分隔符,JavaScript 解释器能够根据这两个分隔符来识别正则表达式。在正则表达式中小括号表示子表达式,每个子表达式匹配的文本信息会被独立存储。点号需要转义,因为在正则表达式中它表示匹配任意字符,星号表示前面的匹配字符可以匹配任意多次。
在上面示例中,数组 a 包含 4 个元素,其中第一个元素存放的是匹配文本,其余元素存放的是每个正则表达式的子表达式匹配的文本。
另外,返回的数组还包含两个对象属性,其中 index 属性记录匹配文本的起始位置,input 属性记录的是被操作的字符串。
console.log(a.index);
console.log(a.input);
在全局匹配模式下,match() 将执行全局匹配。此时返回的数组元素存放的是字符串中所有匹配文本,该数组没有 index 属性和 input 属性;同时不再提供子表达式匹配的文本信息,也不提示每个匹配子串的位置。如果需要这些信息,可以使用 RegExp.exec() 方法。
socket
Python基础教程
MySQL函数
MySQL
C语言入门
C语言专题
C语言编译器
C语言编程实例
GCC编译器
C语言项目案例
C++教程
OpenCV
Unity 3D教程
Redis
Android教程
JavaScript
Mybatis
Spring Cloud
Maven
Spring Boot
Spring MVC
Hibernate
Linux
Linux命令
Shell脚本
Java教程
Spring
Servlet
Struts2
Java Swing
JSP教程
CSS教程
TensorFlow
Go语言教程
Docker
VIP视频
C++ pair(STL pair)类模板的用法详解
Linux /etc/passwd内容解释(超详细)
Linux free命令:查看内存使用状态
CSS注释
安全中国VC++开发视频教程
英语和数学不好,能学编程吗?
C++类成员的访问权限以及类的封装
Android SeekBar:拖动条控件
Spring Boot Admin的介绍及使用
JS数组转字符串(3种方法)