JavaScript 之 字符串(3)

1.概述

1.1定义

字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。

'sdf'
"sdf"复制代码

单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。如下所示,这两个都为合法的字符串

'key = "value"'
"It's a long journey"复制代码

1.2字符串与数组

字符串可以被视为字符数组(原形基于字符数组),因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)。

var s="hellow world";
s[0];//"h"
s[1];//"e"
s[2];//"l"
"hellow world"[1]//"e"
复制代码

1.3 length属性

length属性返回字符串的长度,该属性是无法改变的;

var s = 'hello';
s.length // 5

s.length = 3;
s.length // 5

s.length = 7;
s.length // 5复制代码

上面代码表示字符串的length属性无法改变,但是不会报错。

2.字符串的基本处理函数



(1).charAt(位置) 获取字符串中的某一个字符

var str="hellow world";
var x=str.charAt(1);
console.log(x);//e
复制代码

charAt(位置) 的应用

(1)把字符串中的元素全部输出出来

var str="hellow world";
for(var n=0;n<str.length;n++){
    console.log(str[n]);
}复制代码

(2)字符统计

<body>
	<textarea name="" id="bt2" cols="30" rows="10"></textarea>
	<input type="text" id="bt1">
	<button id="bt0">计算</button>
	<script>
	var bt0=document.getElementById("bt0");
	bt0.onclick=function(){
		var bt1=document.getElementById("bt1");
		var x=bt1.value;
		var bt2=document.getElementById("bt2");
		var text=bt2.value;
		var sum=0;
		for(var n=0;n<text.length;n++){
			if (text.charAt(n)==x) {
				sum++;
			}
		}
		console.log(x+"出现次数为"+sum+"次");
	}
	</script>
</body>
复制代码


字符统计升级版:统计每个字符的出现次数,并且找到出现次数最多的字符,都在控制台输出;

<script>
// 拆分需求:
//1.含有多少个字符; 
        var str="adfhfuoidaaaa";
	var arr=[];//定义一个空的数组,放置有多少个不同的字符
	for(var n=0;n<str.length;n++){
		if (arr.indexOf(str.charAt(n))==-1) {
			arr.push(str.charAt(n));
		}
	}
	console.log(arr);
// 2.统计每个字符出现的次数; 
	var sumarr=[];//定义一个空的数组,放置每个不同的字符出现的次数;
	for(var n=0;n<arr.length;n++){//依次拿出不同的字符
		var sum=0;
		for(var j=0;j<str.length;j++){
			if (str.charAt(j)==arr[n]) {
				sum++;
			}
		}
		sumarr.push(sum);//将每次的和(每个字符出现的次数)插入到指定的数组里;
		console.log(arr[n]+"出现次数为"+sum);
	}
// 3.进行比较,在控制台输出:谁的出现次数最多,有多少次;
	var max=sumarr[0];
	var index=0;
	for(var i=1;i<sumarr.length;i++){
		if (sumarr[i]>max) {
			max=sumarr[i];
			index=i;
		}
	}
	console.log(arr);
	console.log(sumarr);
	console.log(arr[index]+"的出现次数最多"+",共计"+sumarr[index]+"次");
</script>
复制代码

(2).   substr(m,n) 截取一段字符

两个参数m,n,表示从m位开始,向后边截取n位;如果只写一个参数m,会从这个参数后边全部截取;

var str="hellow world";
var x=str.substr(0,3);//hel
console.log(x.length);
复制代码

length用处: 截取任意一个字符串的后几位;

var str="oiarfesuauif ioweai ajdco3wei";
console.log(str.substr(length-3,3));//wei
复制代码

 substr(m,n)应用::手机号码判断

<body>
	手机号码:<input type="text" id="bt1">
	<button id="bt0">注册</button>
	<script>
		var bt0=document.getElementById("bt0");
		bt0.onclick=function(){
			var bt1=document.getElementById("bt1");
			var number=bt1.value;
			if (number.length!==11) {
				alert("手机号码必须为11位");
			}else if (number.substr(0,3)!=="139") {
				alert("必须为139开头");
			}else if (number.substr(length-3,3)!=888) {
				alert("后三位必须为888");
			}else{
				alert("注册成功");
			}
		}
	</script>
</body>
复制代码

(3).concat()字符串合并;(了解)

var str1="hellow";
var str2="world";
console.log(str2.concat(str1));
复制代码

(4).charCodeAt(i)   获取字符串中第i个位置的字符unicode编码;(了解)

charCodeAt为驼峰命名

var str="hellow world";
console.log(str.charCodeAt(0));
复制代码

(5). substring(m,n) 和slice作用相同; 截取字符串  (了解)

 截取字符串(两个参数m,n, 从第m位截取到第n位,并且不包括第n位)

var str="hellow world";                          
console.log(str.substring(1,3));//"el"
复制代码

(6).split("")  通过字符串中指定的字符,将其分割成数组; (重要)

var str="html,css,javascript,html5,css3"; 
var x=str.split(",");
console.log(x);复制代码

应用:书名分割

<body>
	<textarea name="" id="bt1" cols="30" rows="10"></textarea>
	<button id="bt0">分割</button>
	<ul id="nav">
		<li>书名</li>
	</ul>
	<script>
	//需求:将不同的书名提取出来,然后连接成li,放入ul里,
	//由于字符串提取太麻烦,可以根据逗号(,)把其转化为数组;
	//书名:html,css,javascript,html5,css3;
	var bt0=document.getElementById("bt0");
	bt0.onclick=function(){
		var bt1=document.getElementById("bt1");
		var text=bt1.value;
		// console.log(text);
		var arr=text.split(",");  //转化成数组,是为了提取方便;
		// console.log(arr);
		var str="";
		for(var n=0;n<arr.length;n++){
			str+="<li>"+arr[n]+"</li>";
		}
		var nav=document.getElementById("nav");
		nav.innerHTML=str;
	}
	</script>
</body>
复制代码

split() 应用升级版

知字符串:“小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76”;求所有同学的平均成绩并保留2位小数

var str="小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
var studentarr=str.split(";");
console.log(studentarr);
var sum=0;
for(var n=0;n<studentarr.length;n++){
    var student=studentarr[n].split(":");
//通过冒号,将姓名和成绩再次分割成数组,那么成绩就自动放在了数组的第二位,做一个求和
    sum+=parseInt(student[1]);
    var average=sum/(n+1);
}
console.log(average);
复制代码

(7).slice()      和数组中的用法相同

(8).indexOf()    和  .lastIndexOf()      和数组中的用法相同

(9)toUpperCase()全部转化为大写 toLowerCase全部转化为小写

var str="hellow world";
var x=str.toUpperCase();//转换后原字符串不变;
var x=str.toLowerCase();
console.log(typeof(x));//string
复制代码

(10).replcce("m","n") 替换指定的字符串

两个参数 ,m:想要替换的字符 n:替换成什么字符;只能替换第一个

语法:stringObject . replace ( regexp / substr , replacement )



var str="hellow world hellow";
var x=str.replace("hellow","你好");//只能替换第一个
console.log(x); //"你好 world hellow"
console.log(str);// 替换后原字符串不变
复制代码

 实例1:一个(或多个)敏感字符的替换;

一个敏感字符的替换

<body>
	<textarea name="" id="bt1" cols="30" rows="10"></textarea>
	<button id="bt0">替换</button>
	<script>
	//需求:如果字符中含有tmd,将其替换成***
	var bt0=document.getElementById("bt0");
	bt0.onclick=function(){
		var bt1=document.getElementById("bt1");
		var text=bt1.value;
		for(var n=0;n<text.length;n++){
			text=text.replace("tmd","***");//做一个累加的替换
			// var x=text.replace("tmd","***")
		}
		bt1.value=text;
	}
	</script>
复制代码

多个敏感字符的替换

<body>
	<!-- 需求:当字符中含有TMD,tmd,法轮大法好等敏感字是,替换为*** -->
	<textarea name="" id="bt1" cols="30" rows="10"></textarea>
	<button id="bt0">替换</button>
	<script>
	var bt0=document.getElementById("bt0");
	var arr=["TMD","tmd","法轮大法好"];
	bt0.onclick=function(){
		var bt1=document.getElementById("bt1");
		var text=bt1.value;
		for(n=0;n<arr.length;n++){
			for(j=0;j<text.length;j++){
				text=text.replace(arr[n],"***");//做一个累加的替换
			}
		}
		bt1.value=text;
	}
	</script>复制代码


实例2:将下边两个字符串拼接成["A1", "A2", "A", "B1", "B2", "B", "C1", "C2", "C", "D1", "D2", "D"]

var arr1=['A', 'B', 'C', 'D'];var arr2=['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'];for(var n=0;n<arr1.length;n++){    arr1[n]+="3"}var x=arr1.concat(arr2);x.sort();function fn(num){    var result = num.replace(/3/g, "");    return result}console.log(x.map(fn))复制代码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值