一、属性
1、length:字符串长度
字符串中的每个元素都有对应的下标,总长度为length
如:var str = 'hello';
// str[0] = h; str[3] = l; str.length = 5;
2、注: 字符串不可以被修改,如果必须要改,只能给当前变量,重新赋值
var str = '亲,包邮哦';
str[0] = '哎';
console.log(str) //亲,包邮哦 (值不变)
//可以重新赋值,改变字符串变量
var str = '亲,包邮哦';
str = '哎,包邮哦';
console.log( str ) //哎,包邮哦(重新赋值,值改变)
二、字符串的方法
1、str.charAt( ): 获取指定下标的字符
var str = 'hello';
console.log(str.charAt(1)); //e
或: console.log(str[1]);
2、str.charCodeAt() :(成员方法)获取指定下标字符的ASCII码
var str = 'hello';
console.log(str.charCodeAt(1));
3、String.fromCharCode():(静态方法)将指定ASCII码转换成字符
console.log(String.fromCharCode(98,99,100));
例:得到一个随机的大写字母:A-Z (65-90)
Math.random(): 0-1,且不包括1
parseInt( Math.random()*11): 0-10
所以: var n = 65 + parseInt(Math.random()*26) // 65-90
console.log(String.fromCharCode(n));
4、str.indexOf():查找第一次出现指定字符(或子字符串)的下标,如果不存在则返回-1;(空格也算字符,也要计入下标内)
var str = 'halo world';
console.log( str.indexOf('ha') ) // 1
console.log( str.indexOf('haa') ) // -1
5、str.lastIndexOf():查找最后一次出现指定字符的下标,如果不存在则返回-1;
6、str.search( ):查找第一次出现指定字符的下标,如果不存在则返回-1 ;
跟indexOf用法类似,区别在,search可以用正则去查找匹配
console.log( str.search( /E/i ) ); 查找字符串中第一次出现e或E的下标(i表示忽略大小写);
7、str.concat( ):连接字符串,但通常用 + 号拼接;
8、str.replace( ):替换,默认只会替换第一个匹配的字符或字符串;
(需要写两个参数,第一个参数是字符串中的内容,第二个参数是要替换成的内容,第一个参数一般写正则表达式);
var str = 'I am a boy boy boy';
var str2 = str.replace( 'boy', 'girl' );
console.log(str2) // I am a girl boy boy
第一个参数一般写正则表达式
var str = 'I am a boy BOY Boy';
console.log( str.replace(/boy/gi, 'girl' ) )
g:全局匹配;i:忽略大小写;
9、str.substring(start, end):截取字符串(两个参数均表示下标 ,前闭后开)
不给参数,返回的还是原字符串;一个参数,表示从当前下标到结束;两个参数,表示按指定下标截取;
10、str.slice(start, end):截取字符串,参数表示的是下标
11、str.substr() :截取字符串,第一个参数表示开始的下标,第二个参数表示截取长度;
//substring, slice,substr的区别
//substring
//1,两个参数可以写反,大数可以写前面
//2,参数如果为负数,则会变成0
//slice
//1, 大数不可以写前面,如果大数写前面则返回""
//2,参数可以为负数,表示倒数第几个
//substr
//1, 第二个参数表示长度
//2,参数可以为负数,表示倒数第几个
12、str.split():拆分字符串,把字符串拆分成数组
13、str.toLowerCase( ):把字符串转换成小写
14、str.toUpperCase( ):把字符串转换成大写
15、str.trim() : 去掉首尾空格
var str = " dd dd ";
console.log(str.trim()); //"dd dd"
16、instanceof : 判断某个对象是否属于某个类
var arr = [1,2,3,5];
console.log( arr instanceof Array ) // true;
三、Math对象:可以用于执行数学任务
Math.random() //返回0-1之间的随机数
Math.round(3.6) //四舍五入
Math.max(num1, num2) //返回较大的数
Math.min(num1, num2) //返回较小的数
Math.abs(num) //绝对值
Math.ceil( 19.3 ) //向上取整
Math.floor( 11.8 ) //向下取整
Math.pow(x, y) //x的y次方
Math.sqrt(num) //开平方
四、字符串操作案例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script> //1, https://www.baidu.com/s?name=avery&age=20&sex=male,取出name, age和sex的值. // https:// : 协议 // www.baidu.com : 域名 (内部是ip地址) // /s : 路径 // ? :分隔服务器地址和参数 //name=avery&age=20&sex=male : 参数部分, 每两个参数之间用&符号分隔 var str = "https://www.baidu.com/s?name=avery&age=20&sex=male"; var name = "age"; var val = fn(str, name); console.log(val); function fn(str, name){ var str2 = str.substring( str.indexOf("?")+1 ); //"name=avery&age=20&sex=male" var arr2 = str2.split("&"); for (var i=0; i<arr2.length; i++) { var str3 = arr2[i]; //"name=avery" / "age=20" / "sex=male" var arr3 = str3.split("="); if (arr3[0] == name) { return arr3[1]; } } return ""; } //2, 字母数字组合验证码(四位) (如: 4YT8) (数字,大写字母随机) var str = ""; for (var i=0; i<4; i++) { var flag = Math.random()>0.5 ? true : false; if (flag) { str += parseInt(Math.random()*10); } else { str += String.fromCharCode( 65 + parseInt(Math.random()*26) ); } } console.log(str); //3, 将字符串按照单词进行逆序,空格作为划分单词的唯一条件 // 如传入:”Welome to Beijing”改为 “Beijing to Welcome” var str = "Welome to Beijing"; var arr = str.split(" "); arr.reverse(); var str2 = arr.join(" "); console.log(str2); //4, 实现函数,查找子串出现的次数,返回字符串str中出现子串的次数 // 如传入:”abcabcabc”, “abc”; 返回:3 // “ababacccababa” , “aba” , 返回:4 var str = "ababacccababa"; var str2 = "aba"; var n = 0; //次数 while( str.indexOf(str2) != -1 ) { n++; str = str.substring( str.indexOf(str2) + str2.length ); } console.log(n); //5, 已知邮箱的用户名只能由数字字母下划线组成,域名为@163.com //,写一个函数,判断一个字符串是否是千锋邮箱,是返回true,不是返回false。 // mail@163.com 是 // $mail@163.com 不是 // mail@163.comp 不是 function fn(email){ var arr = email.split("@"); if (arr.length != 2) { return false; } //域名 if (arr[1] != "@163.com") { return false; } //用户名 var str = arr[0]; for (var i=0; i<str.length; i++) { var ch = str[i]; if (ch>='0'&&ch<='9' || ch>='a'&&ch<='z' || ch>='A'&&ch<='Z' || ch=='_') { continue; } return false; } return true; } console.log( fn("mail@163.com") ); //6, 将字符中单词用空格隔开 // 已知传入的字符串中只有字母,每个单词的首字母大写,请将每个单词用空格隔开,只保留第一个单词的首字母大写 // 传入:”HelloMyWorld” // 返回:”Hello my world” var str = "HelloMyWorld"; for (var i=1; i<str.length; i++) { var ch = str[i]; if (ch>='A' && ch<='Z') { str = str.replace(ch, " " + ch.toLowerCase()); i++; } } console.log(str); //7, 已知一个字符串对象中,英语单词用各种非字母字符分割,统计单词的个数 // 传入: “Yes,she****is%%my@love.” ->Yes she is my love, 5个 var str = "Yes,she****is%%my@love."; for (var i=0; i<str.length; i++) { var ch = str[i]; if (ch>='a'&&ch<='z' || ch>='A'&&ch<='Z') { } else { str = str.replace(ch, " "); } } console.log(str); var n = 0; var arr = str.split(" "); for (var i=0; i<arr.length; i++) { if (arr[i].length != 0) { n++; } } console.log(n); //5 </script> </head> <body> <p id="tip">提示</p> <input type="text" placeholder="请输入用户名" /> <input type="password" placeholder="请输入密码" /> <input type="button" value="登录" /> </body> </html>
来源:https://www.cnblogs.com/shizhihong/p/9172811.html