string对象及处理字符串的方法
一、冒泡排序
var arr=[23,3,5,0,18];
获取第一个:alert(arr[0]);
获取最后一个:alert(arr[arr.length-1]);
获取中间一个:alert(arr[(arr.length-1)/2]);
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>冒泡排序</title>
<script type="text/javascript">
var arr=[23,3,5,0,18];
// alert([0]);获取第一个
// alert(typeof arr); 对象类型
// alert(arr[arr.length-1]); //获取最后一个
// alert(arr[(arr.length-1)/2]);//获取中间一个
// 第一轮比较(i=0): 比较了4次 (length-i-1)
// 3,23,5,0,18
// 3,5,23,0,18
// 3,5,0,23,18
// 3,5,0,18,23
// 第二轮比较(i=1): 比较了3次 (length-i-1)
// 3,5,0,18,23
// 3,0,5,18,23
// 3,0,5,18,23
// 第三轮比较(i=2): 比较了2次 (length-i-1)
// 0,3,5,18,23
// 0,3,5,18,23
// 第四轮比较(i=3): 比较了1次 (length-i-1)
// 0,3,5,18,23
for(var i=0;i<arr.length-1;i++){ //控制比较的轮数
for(var j=0;j<arr.length-i-1;j++){ //控制比较的次数
var temp;//定义一个变量
if(arr[j]>arr[j+1]){ //将数据从小到大排列,如果是<的话,数据将从大到小排列,也可用以下翻转进行
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(var i=0;i<arr.length;i++){
document.writeln(arr[i]);
}
// 运用翻转将数据从大到小排列
// var arr1=arr.reverse();
// for(var i=0;i<arr1.length;i++){
// document.writeln(arr1[i]);
// }
</script>
</head>
<body>
</body>
</html>
二、string对象的属性
length:表示字符串的长度
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>字符串的长度</title>
<script type="text/javascript">
var str='Hello ZhangYiXing';
alert(str.length);
// document.write(str.length);
</script>
</head>
<body>
</body>
</html>
三、操作字符串数据的方法
(1)match();
通过此方法输出字符串中指定的值。
var str1='Hello Zhang YiXing';
document.write(str1.match('Hello')); //输出结果为Hello
//document.write(str1.match('hello')); //输出的结果为null
//document.write(str1.match('Hello YiXing')); //输出结果为null
(2)search();
用于检索字符串中指定的子字符串。
var str2='I Love JavaScript';
//document.write(str2.search('love')); //在字符串中检索的字符串不存在,则返回-1
document.write(str2.search('Love')); //返回在字符串中的索引位置:是以子字符串的首个字符的索引输出
(3)indexOf();
返回在字符串中元素第一次出现的索引位置。
// document.write(str2.indexOf('a','0')); //字符串类型 结果为8
document.write(str2.indexOf('a',0)); //字符串类型 结果为8
// document.write(str2.indexOf('a',9)); // 结果为10
// document.write(str2.indexOf('a',15)); //结果为-1,表示没有查询到数据
(4)replace();
在字符串中用一些字符串替换另一些字符串。
document.write(str2.replace('Love','Like'));
(5)CharAt(n);
用来获取字符串中的某一个字符,n表示的是字符串中字符的下标。
var str3='What are you doing';
// document.write(str3.charAt(4)); //输出空格
// document.write(str3);
问题:按照字符串的每一个字符输出页面
for(var i=0;i<str3.length;i++){
// document.write(str3.charAt(0));
// document.write(str3.charAt(1));
// document.write(str3.charAt(2));
// document.write(str3.charAt(3));
// document.write(str3.charAt(4));
// document.write(str3.charAt(5));
// document.write(str3.charAt(6));
// document.write(str3.charAt(7));
// document.write(str3.charAt(8));
// document.write(str3.charAt(9));
// document.write(str3.charAt(10));
// document.write(str3.charAt(11));
// document.write(str3.charAt(12));
document.write(str3.charAt(i)+'-');
}
(6)toUpperCase();大写 toLowerCase(); 小写
字符串大小写的转换。
var str5='I have a dream';
//document.write(str5.toUpperCase()); //结果为大写
document.write(str5.toLowerCase()); //结果为小写
(7)concat();
连接字符串
var str6='I like red';
document.write(str6.concat(' tea',' and water'));
(8)localeCompare();
比较字符串:用来比较两个字符串,返回一个数字。、
注意:如果字符串1小于字符串2,则返回小于0的数字;
如果字符串1大于字符串2,则返回数字1;
如果字符串1等于字符串2,则返回数字0。
var str7='hello';
var str8='Hello';
document.write(str7.localeCompare(str8)); //结果为-1 注意:同字母比较时,大写字母大于小写字母
document.write('<hr />');
var str7_01='Yellow';
var str8_01='lay';
document.write(str7_01.localeCompare(str8_01)); //结果为1 注意:不同字母比较时,不论大小写,字母靠后大于字母靠前的
(9)split();
分割字符串,返回结果为一个数组:分隔符:为字符串中的字符。
var str9='越努力越幸运越努力 越幸运越努力越幸运';
var arr_09=str9.split(' ');
document.write(arr_09);
(10)substring();
var str10='I Love You';
document.write(str10.substring(2,8)); //输出的结果为Love Y
四、拓展
1.问题:如何将一个字符放置到一个数组中?
var str4='Hello World';
var strString=new Array();
for(var i=0;i<str4.length;i++){
strString[i]=str4.charAt(i);
}
document.write(strString);
// 遍历数组
for(var i=0;i<strString.length;i++){
document.write(strString[i]);
}
2.substring(); 和substr();区别:
// 如果是一个参数的话,输出的结构一样;
// 如果是两个参数的话,substr是获取从start位开始到end位的字符串长度;
// substring是获取从start位开始到end位之间的字符串,不包含结束索引的位置
var str10='I Love You';
document.write(str10.substring(2,8)+'<br />'); //输出的结果为Love Y
document.write(str10.substr(2,8)); //输出的结果为Love You
3.快速排序:是对冒泡排序的一种改进。基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
一趟快速排序的算法是:
1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];
3)从j开始向前搜索,即由后开始向前搜索(j–),找到第一个小于key的值A[j],将A[j]和A[i]互换;
4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;
5)重复第3、步,直到i=j;(3,4步中,没找到符合条件的值,即3中A[i]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直到找到为止。找到符合条件的值,进行交换的时候i,j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。
4.二分查找:也称折半查找,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
算法要求:1.必须采用顺序存储结构;
2.必须按关键字大小有序排列。