初识串

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

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

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

javascript有很多串的方法吗,具体的请查阅api。

https://developer.mozilla.org/en-US/

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



	
		
   
   
		
	
	
<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>
	

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值