JavaScript

超轻量级php框架startmvc

javascript数据结构之串的概念与用法分析

更新时间:2020-05-06 05:36:01 作者:startmvc
本文实例讲述了javascript数据结构之串的概念与用法。分享给大家供大家参考,具体如下:

本文实例讲述了javascript数据结构之串的概念与用法。分享给大家供大家参考,具体如下:

串是由零个或多个字符组成的有限序列。串中字符的个数称为串的长度

串中任意个连续的字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。通常称字符在序列中的序号为该字符在串中的位置。子串的首字符在主串中首次出现的位置定义为子串在主串中的位置。

串的逻辑结构和线性表十分相似,区别仅仅在于串的数据对象约束为字符集。然而两者的基本操作有很大差别。线性表中,基本以单个元素来进行操作;而串中多半以串的整体也就是子串来作为操作对象

JavaScript有很多串的方法吗,具体的请查阅api。 https://developer.mozilla.org/en-US/

这里我们挑一个来看看,比如indexOf,该方法返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。我们来模拟一下这个方法的实现:


<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title></title>
 </head>
 <body>
<script type="text/javascript">
 function index(a,b,pos){
 //a为主串,b为要寻找的子串,pos为开始寻找的位置
 if(pos>0){
 var a_len=a.length,
 b_len=b.length,
 i=pos;
 while(i<=a_len-b_len+1){
 //从第i个位置取和子串长度相等的进行比较,如果没有找到则继续i+1
 var c=a.substr(i,b_len);
 if(c==b)
 return i;
 i++;
 }
 }
 return false;
 }
 var a="abcdefg";
 var b="def";
 var c=index(a,b,1);
 alert(c);//3
 alert(a.indexOf(b,1));//3
</script>
 </body>
</html>

这个思想其实很简单,就是在主串中取从第i个字符起,长度和要寻找的串相等的子串进行比较,直到找到为止。所以说我们在运用一些原生的api时,如果能够知道其实现的原理,就可以更好的驾驭它们。当然,该方法还可以改进,我在以后的文章中会介绍的。

javascript 数据结构