首页 > 编程语言 >JavaScript用indexOf()在字符串数组中查找子串时需要注意的一个地方

JavaScript用indexOf()在字符串数组中查找子串时需要注意的一个地方

时间:2023-09-04 18:05:06浏览次数:37  
标签:子串 MIB 数组 indexOf JavaScript 查找 str 字符串


一、遇到问题

在 继续更新完善:C++ 结构体代码转MASM32代码  中,由于结构体成员中可能为数组类型的情况,因此我们在提取结构体成员信息的过程中,需要检测结构体成员名称字符串中是否包括 [],如果包括那么我们要截取'['前面的内容作为成员名称。

在用字符串的indexOf()方法检测和定位'['时,发现对字符串数组无效,即使字符串数组元素值中包括'[',但返回值仍是-1。

深入分析后,找到了原因。

二、实例分析

我们通过下面这个例子来说明:

<!DOCTYPE html>
<html>
<body>

<script>

document.write("<strong>在字符串中查找'['</strong><br>");
var str="MIB_ TCP6ROW OWNER MODULE\ttable[ANY _SIZE]";
document.write('str="',str,'"',"<br>str.indexOf('[')=",str.indexOf('[')+"<br><br>"); // 在字符串中查找'['
document.write("<br><strong>在字符串数组中查找'['</strong><br>");
var a = str.split('\t');
document.write('a="', a, '"<br>',"a.indexOf('[')=",a.indexOf('[')+"<br>"); // 在字符串数组中查找'['

for (var i=0; i < a.length; i++)  
{
    document.write('<br>a[',i,'] ="', a[i], '"<br>',"a[",i,"].indexOf('[')=",a[i].indexOf('[')+"<br>"); // 在字符串数组中查找'['

}
</script>

</body>
</html>

输出结果如下:

在字符串中查找'['
str="MIB_ TCP6ROW OWNER MODULE table[ANY _SIZE]"
str.indexOf('[')=31


在字符串数组中查找'['
a="MIB_ TCP6ROW OWNER MODULE,table[ANY _SIZE]"
a.indexOf('[')=-1

a[0] ="MIB_ TCP6ROW OWNER MODULE"
a[0].indexOf('[')=-1

a[1] ="table[ANY _SIZE]"
a[1].indexOf('[')=5

JavaScript用indexOf()在字符串数组中查找子串时需要注意的一个地方_javascript

在上面的例子中,对于字符串变量str,可以用indexOf()来查找子串,所以str.indexOf('[')可以直接定位到31。

当我们用split()方法把字符串str的值分割为数组a后,尽管数组a的值是"MIB_ TCP6ROW OWNER MODULE,table[ANY _SIZE]",但直接对数组名a使用indexOf()查找子串无效,返回值总是-1。

所以正确的处理方式是对数组a中的元素逐个进行搜索。

标签:子串,MIB,数组,indexOf,JavaScript,查找,str,字符串
From: https://blog.51cto.com/endurer/7353788

相关文章

  • javascript - 将 es5 迁移到 es6 export default
    我正在尝试将代码从es5迁移到es6,我在这两个方面都很新,如果有人能帮助我,我将非常感激。es5版本:lib.jsmodule.exports={foo1:function(){this.foo2(){...}},foo2:function(){...}}主要.jsco......
  • 无涯教程-JavaScript - CUBEVALUE函数
    描述CUBEVALUE函数从多维数据集返回一个聚合值。语法CUBEVALUE(connection,[member_expression1],[member_expression2],…)争论Argument描述Required/OptionalconnectionThenameoftheconnectiontothecube.-AtextstringRequiredmember_expression......
  • 【校招VIP】前端JavaScript语言之跨域
    考点介绍:什么是跨域?浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。跨域是前端校招的一个重要考点,在面试过程中经常遇到,需要着重掌握。本期分享的前端算法考点之大数据相关,分为试题、文章以及视频三部分。答案详情解析和文章内容可点击下方......
  • 无涯教程-JavaScript - CUBEMEMBER函数
    描述CUBEMEMBER函数从多维数据集返回一个成员或元组。使用此函数可以验证多维数据集中是否存在成员或元组。语法CUBEMEMBER(connection,member_expression,[caption])争论Argument描述Required/OptionalconnectionNameoftheconnectiontothecube-Atextstr......
  • 无涯教程-JavaScript - CUBEKPIMEMBER函数
    描述该函数返回关键绩效指标(KPI)属性,并在单元格中显示KPI名称。语法CUBEKPIMEMBER(connection,kpi_name,kpi_property,[caption])争论Argument描述Required/OptionalconnectionNameoftheconnectiontothecube-AtextstringRequiredkpi_nameNameoft......
  • 刷题[Leetcode]3. 无重复字符的最长子串
    3. 无重复字符的最长子串classSolution{public:  intlengthOfLongestSubstring(strings){    if(s.size()==0)return0;    unordered_set<int>unset;    intmaxLen=0;    intleft=0;    for(intright=......
  • 无涯教程-JavaScript - TTEST函数
    TTEST函数取代了Excel2010中的T.TEST函数。描述该函数返回与学生t检验相关的概率。使用TTEST来确定两个样本是否可能来自均值相同的相同两个基础总体。语法TTEST(array1,array2,tails,type)争论Argument描述Required/OptionalArray1Thefirstdataset.Required......
  • 无涯教程-JavaScript - TINV函数
    TINV函数取代了Excel2010中的T.INV.2T函数。描述该函数返回学生t分布的两尾逆。语法TINV(probability,deg_freedom)争论Argument描述Required/OptionalProbabilityTheprobabilityassociatedwiththetwo-tailedStudent'st-distribution.RequiredDeg_freedom......
  • JavaScript – 小技巧 Tips
    1e6等价于1+后面6个零console.log(1e6===1_000_000); 模拟C#的Record DeconstructclassSizeimplementsIterable<number>{constructor(publicwidth:number,publicheight:number){}*[Symbol.iterator](){......
  • 无涯教程-JavaScript - STDEV函数
    STDEV函数替代Excel2010中的STDEV.S函数。描述该函数根据样本估算标准偏差。标准偏差是对值与平均值(平均值)的分散程度的度量。语法STDEV(number1,[number2],...)争论Argument描述Required/OptionalNumber1Thefirstnumberargumentcorrespondingtoasampleo......