JS字符串搜索(6种方法)

通常有必要在开发中检索字符串并找到特定的字符串。用户可以选择以下方法来执行相应的操作,如表所示。

字符串类型搜索字符串方法的字符串方法说明

charAt()

返回字符串中的第n个字符

charCodeAt()

返回字符串中第n个字符的代码

indexOf()

搜索字符串

lastIndexOf()

从后到前检索字符串

match()

找到一个或多个正则表达式匹配项

search()

检索与正则表达式匹配的子字符串

使用字符串的charAt()和chatCodeAt()方法查找字符,这些字符可以根据参数(非负整数的下标值)在指定位置返回字符或字符代码。

对于charAt()方法快乐赛车 ,如果参数不在0到字符串的长度1之间,则返回一个空字符串;否则,返回0。对于charCodeAt()方法,它将返回NaN而不是0或空字符串。示例1下面的示例扩展了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()方法搜索字符串,这可以根据参数字符串返回指定子字符串的下标位置。两种方法都有两个参数,如下所述。对于第二个参数,您需要注意一些特殊情况。示例2以下代码查询字符串中第一个字母a的下标位置。

var s = "JavaScript";
var i = s.indexOf("a");
console.log(i);  //返回值为1,即字符串中第二个字符

indexOf()方法仅返回找到的第一个子字符串的起始索引值;如果未找到,则返回-1。示例3以下代码查询URL字符串中第一个字母n的下标位置。

var s = "c.biancheng.net";
var a = s.indexOf("biancheng");  //返回值为3,即第一个字符n的下标位置

如果要查找下一个子字符串亚博app ,可以使用第二个参数来限制范围。示例4以下代码分别查询URL字符串中两个点字符下标的位置。

var s = "c.biancheng.net";
var b = s.indexOf(".");  //返回值为1,即第一个字符.的下标位置
var e = s.indexOf(".", b + 1);  //返回值为11,即第二个字符.的下标位置

indexOf()方法按从左到右的顺序搜索。如果要从右到左搜索,可以使用lastIndexOf()方法进行搜索。示例5以下代码从右到左查询URL字符串中最后一个点字符的下标位置。

lastIndexOf()方法的搜索顺序是从右到左亚博电竞 ,但是其参数和返回值是根据字符串的下标从左到右计算的,即第一个字符的下标值的字符串始终为0,最后一个字符的下标值始终为length-1。示例6 lastIndexOf()方法的第二个参数指定了开始搜索的索引位置,但是搜索将从此点开始,而不是从右边开始。

var s = "http://c.biancheng.net";
var n = s.lastIndexOf(".", 11);  //返回值是8,而不是18

第二个参数值11表示字符a(第一个)的下标位置,然后从左到左搜索js查找字符串中的字符,因此返回第一个点的位置。如果找到,它将返回首次找到的字符串的起始下标值。

var s = "http://c.biancheng.net";
var n = s.lastIndexOf("c");  //返回值为7

如果未设置第二个参数,或者该参数为负值,或者该参数大于或等于length,则该操作将遵循indexOf()方法。搜索字符串的search()方法与indexOf()函数相同。它查找指定字符串的第一个匹配项。但是search()方法只有一个参数,该参数定义了匹配模式。此方法没有lastIndexOf()的反向搜索功能,也不支持全局模式。示例7以下代码使用search()方法来匹配URL字符串下标位置的斜杠字符。

var s = "c.biancheng.net";
n="s.search("//");"

Search()方法参数定义:匹配字符串match()方法可以找到所有匹配的子字符串并以数组形式返回它们。示例8以下代码使用match()方法查找字符串中的所有字母c并返回它们。

var s = "http://c.biancheng.net";
var a = s.match(/c/n);  //全局匹配所有字符c
console.log(a);  //返回数组[c,c]。

match()方法返回一个数组。如果不是全局匹配,则match()方法只能执行匹配。例如广东快3 ,以下匹配模式不具有n的修饰符,只能执行一次匹配,返回仅包含一个元素c的数组。

var a = s.match(/c/);  //返回数组[h]

如果找不到匹配的字符,则返回null而不是一个空数组。

不执行全局匹配时,如果匹配模式包含一个子表达式,则将返回该子表达式匹配的信息。示例9以下代码使用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解释器可以根据这两个分隔符标识正则表达式的字符。在正则表达式中,括号表示子表达式,与每个子表达式匹配的文本信息将独立存储。点必须转义,因为在正则表达式中,它意味着可以匹配任何字符,而星号则意味着前面的匹配字符可以匹配任意次。

在上面的示例中js查找字符串中的字符,数组a包含4个元素。第一个元素存储匹配的文本,其余元素存储与每个正则表达式的子表达式匹配的文本。

此外,返回的数组还包含两个对象属性。索引属性记录匹配文本的起始位置,输入属性记录正在处理的字符串。

console.log(a.index);
console.log(a.input);

在全局匹配模式下,match()将执行全局匹配。此时,返回的数组元素将所有匹配的文本存储在字符串中。该数组没有索引属性和输入属性;同时不再提供子表达式匹配的文本信息,不提示每个匹配子串的位置。如果需要此信息,可以使用RegExp.exec()方法。

老王
地址:深圳市福田区国际电子商务产业园科技楼603-604
电话:0755-83586660、0755-83583158 传真:0755-81780330
邮箱:info@qbt8.com
地址:深圳市福田区国际电子商务产业园科技楼603-604
电话:0755-83174789 传真:0755-83170936
邮箱:info@qbt8.com
地址:天河区棠安路288号天盈建博汇创意园2楼2082
电话:020-82071951、020-82070761 传真:020-82071976
邮箱:info@qbt8.com
地址:重庆南岸区上海城嘉德中心二号1001
电话:023-62625616、023-62625617 传真:023-62625618
邮箱:info@qbt8.com
地址:贵阳市金阳新区国家高新技术开发区国家数字内容产业园5楼A区508
电话:0851-84114330、0851-84114080 传真:0851-84113779
邮箱:info@qbt8.com