Javascript字符串部分
目录
字符串
认识字符串
访问字符串中的字符:
访问字符串中单个字符:
字符串中的字符进行遍历也可以通过循环遍历
字符串方法
charCodeAt( ):
String.formCharCode( ):
字符串查找方法
indexOf( )
lastIndexOf( )
search( )
substring
substr
slice(是数组的方法)
replace( )
split( ) 字符串分割
toLowerCase( )
toUpperCase( )
contact
字符串练习
字符串_验证码(1)
字符串_验证码(2)
字符串练习
字符串_敏感词过滤
字符串_表单验证
字符串
认识字符串
概念:所有带单引号或双引号的都叫做字符串
声明:
- 通过new运算符去声明字符串
- 省略new声明字符串
- 字符串常量赋值
var str1 = new String(100);alert(str1 + 20); //10020var str2 = String(100);alert(str2 + 20); //10020var str3 = "100";alert(str3 + 20); //10020
访问字符串中的字符:
字符串.length 访问字符串中字符的个数
【注】中文 utf-8(三个字符表示一个汉字) gbk(两个字符表示一个汉字)
在计数的时候都是当做一个汉字计数
var str = "hello北京";alert(str.length); //7, hello---5; 北京---2
访问字符串中单个字符:
字符串.charAt(下标) 【注】从0开始
字符串[下标] (类似数组)
【注】字符串是只读的,字符串一旦被声明就没有办法被修改;如果非要声明字符串,我们只能将原字符串销毁,生成新的字符串
【注】在JS中,字符串既是基本数据类型,又是复合数据类型。
var str = "hello北京";alert(str.charAt(4)); //oalert(str[4]); //ostr[4] = "x";alert(str); //hello北京
字符串中的字符进行遍历也可以通过循环遍历
var str = "hello北京";var str2 = str; //无法用此方法修改str的值for(var i = 0; i < str.length; i++){document.write(str[i] + "
");}
//用三种方式声明字符串数据类型是不同的 var str1 = new String(100);alert(typeof str1); //objectvar str2 = String(100);alert(typeof str2); //stringvar str3 = "100";alert(typeof str3); //string

字符串方法
了解: 格式 字符串.函数名( )
| big( ) | 用大号字体显示字符串 |
| blink( ) | 显示闪动字符串(IE下无效) |
| bold( ) | 使用粗体显示字符串 |
| fixed( ) | 以打字机文本显示字符串 |
| strike( ) | 使用删除线来显示字符串 |
| fontcolor( ) | 使用指定颜色来显示字符串 |
| fontsize( ) | 使用指定尺寸来显示字符串 |
| link( ) | 把字符串显示为链接 |
| sub( ) | 把字符串显示为下标 |
| sup( ) | 把字符串显示为上标 |
document.write("hello".big() + "world".fontcolor("red") + "xxx".sub() + "yyy".sup());

charCodeAt( ):
格式:字符串.charCodeAt( 下标 )
功能:访问字符串中对应下标字符的ASCII码值
var str = "hello";alert(str.charCodeAt(1)); //101
String.formCharCode( ):
格式:String.formCharCode(码值1, 码值2...)
功能:将传入的ASCII码值转成对应的字符
返回值:组成的字符串
var str = String.fromCharCode(97, 98, 99, 100);alert(str); //abcd
字符串查找方法
indexOf( )
格式:supStr.indexOf(subStr, start)
参数:第一个参数,查找的字符串
start 从哪个下标开始去查找,如果不传入,默认从下标0开始查找
功能:在supStr中查找subStr第一次出现的位置,从start这个位置开始查找
返回值:-1 说明没有查找到
var supStr = "abcabcabc";var subStr = "abc";var subStr1 = "abcd";var index = supStr.indexOf(subStr); var index1 = supStr.indexOf(subStr,1);var index2 = supStr.indexOf(subStr1);alert(index); //0alert(index1); //3alert(index2); //-1
lastIndexOf( )
格式:supStr.lastindexOf(subStr)
功能:在supStr中查找subStr最后一次出现的位置
参数:第二个参数是开始查找的位置,查找的下标是从右往左数的
返回值:-1 没有查找到
var supStr = "abcabcabc";var subStr = "abc";var index = supStr.lastIndexOf(subStr); alert(index); //6var supStr = "abcabcabc";var subStr = "abc";var index = supStr.lastIndexOf(subStr,4); alert(index); //3
search( )
格式:supStr.search(subStr)
参数:字符串/正则表达式(用'/ /'括起来的表达式)
功能:在supStr中查找subStr第一次出现的位置
返回值:-1 没有查找到
正则表达式:
修饰符: i 忽略大小写 g 全局匹配
var supStr = "abcabcabc";var subStr = "abc";var index = supStr.search(subStr); alert(index); //0
var supStr = "Abcabcabc";// var subStr = "abc";var subStr1 = /abc/i;// var index = supStr.search(subStr); var index = supStr.search(subStr1); // alert(index); //3alert(index); //0
substring
格式:字符串.substring(start, end);
功能:将字符串中 [ start, end ) 提取这部分字符,生成一个新字符串
返回值:新生成的字符串
var str = "hello";var newStr = str.substring(1,4);alert(newStr); //ellalert(str); //hello
substr
格式:字符串.subStr(start, length)
返回值:新生成的字符串
var str = "hello";var newStr = str.substr(1,3);alert(newStr); //ellalert(str); //hello
slice(是数组的方法)
格式:字符串.slice(start, end);
var str = "hello";var newStr = str.slice(1,4); /* 不包括第四个元素 */alert(newStr); //ellalert(str); //hello
replace( )
格式:supStr.rplace( oldStr, newStr );
功能:用newStr将oldStr替换掉,生成新字符串
参数:
第一个参数传入的是字符串,只能替换一次
第一个参数 正则表达式
/ xxx /ig i 忽略大小 g 全局匹配
返回值:替换成新的字符串
var str = "how are you";var newStr = str.replace("are", "old are");alert(str); //how are youalert(newStr); //how old are you var str = "how are are you";var newStr = str.replace("are", "old are");alert(str); //how are are youalert(newStr); //how old are are you var str = "how are are you";// var newStr = str.replace(/are/, "old are"); //与上式无区别var newStr = str.replace(/are/g, "old are"); alert(str); //how are are youalert(newStr); //how old old are you var str = "how aRe are you";var newStr = str.replace(/are/gi, "old are"); //忽略大小写了alert(str); //how are are youalert(newStr); //how old old are you
split( ) 字符串分割
格式:字符串.split( 分割符, length );
参数:
第一个参数,用这个分割符对源字符串进行分割
第二个参数,控制返回的数组的元素格式,一般情况下不用
功能:用分割符对源字符串,进行字符串分割,将分割完毕以后的子串,放在数组中返回
返回值:数组
注意:
1、相邻的两个分割符,会产生空字符串 ""
2、分割符是空字符串""时,直接将每一个字符串单独分割成子串,放在数组中返回
var str = "how are you";var arr = str.split(" ");alert(arr); //how,are,youalert(str); //how are youvar str = "how are you";var arr = str.split(" ",2);alert(arr); //how,are; 第二个参数一般不用 alert(str); //how are youvar str = "how are you"; // how与are之间有两个空格var arr = str.split(" ");alert(arr); //how,,are,youalert(str); //how are youvar str = "how are you";var arr = str.split("");//""为空字符串alert(arr);//h,o,w, ,a,r,e, ,y,o,u
toLowerCase( )
转成全小写
toUpperCase( )
转成全大写
var str = "helloWORD";alert(str.toLowerCase());//hellowordalert(str.toUpperCase());//HELLOWORD
contact
字符串拼接
var str = "hello";var newStr = str.concat("world",100);var newStr1 = str + "world" + 100; //更加方便,使用较多alert(newStr);//helloworld100alert(newStr1);//helloworld100
字符串练习
1、将字符串 str = "when I was young, I love a girl in neighbor class."中,从young提取到girl生成新字符串,但是不许数单词
var str = "when I was young,I love a girl in neighbor class.";var start = str.indexOf("young");var end = str.indexOf("girl") + "girl".length;var newStr = str.substring(start,end);alert(newStr); //young,I love a girl
2、将字符串用空格隔开,已知传入的字符串中只有字母,每个单词的首字母大写,请将每个单词用空格隔开,只保留一个单词的首字母大写
传入:"HelloMyWorld"
返回:"Hello my world"
function wordOfStr(str){var arr = str.split("");for(var i = 1; i < arr.length; i++){//判断if(arr[i] >= "A" && arr[i] <= "Z"){//1、将大写字符转成小写 2、插入一个空格arr[i] = arr[i].toLowerCase();arr.splice(i, 0, " ");}}return arr.join("");}var str = wordOfStr("HelloMyWorld");alert(str);
字符串_验证码(1)
验证码:验证你是否是机器人
纯数字组成的验证:非常容易破解 6位数字验证码
数组和字符组成的验证码:0~9 a~z A~Z (后两个无法随机)
方法:
1、生成一个数组,就有单个字符,长度为62的数组;随机 0~61的下标
2、a~z的ASCII码为97-122,A~Z的ASCII码为65-90;随机0-122的ASCII码值
//n位验证码 每一个数字的范围0~9 parseInt(Math.random() * 10)function numTestCode(n){var arr = []; //存储生成的数字for(var i = 0; i < n; i++){var num = parseInt(Math.random() * 10);arr.push(num);}return arr.join("");}alert(numTestCode(6));function testCode(n){var arr = [];for(var i = 0; i < n; i++){var num = parseInt(Math.random() * 123);if(num >= 0 && num <=9){arr.push(num);}else if(num >= 97 && num <= 122 || num >= 65 && num <= 90){arr.push(String.fromCharCode(num));}else{i--;}}return arr.join("");}alert(testCode(6));
字符串_验证码(2)
000000
字符串练习
1、将字符串按照单词进行逆序,空格作为划分单词的唯一条件传入:"Welcome to Beijing"改为 "Beijing to Welcome"
function reverseStr(str){var arr = str.split(" ");arr.reverse();return arr.join(" ");}alert(reverseStr("Welcome to Beijing"));
2、传入一个数组,元素类型与个数皆未知,返回新数组,由原数组的元素正序反序拼接而成
传入:[ "One", "Tow", "Three" ];
返回:[ "One", "Tow", "Three", "Three", "Tow", "One" ];
function symmetryArr(arr){var newArr = arr.concat();for(var i = arr.length - 1; i >= 0; i--){newArr.push(arr[i]);}return newArr;}alert(symmetryArr(["One", "Tow", "Three"]));
3、已知一个字符串对象中,英语单词用各种非字母字符分割,统计单词个数
传入:"Yes, she*is&my@love.";
返回:5
function countOfWord(str){var count = 0;for(var i = 0; i < str.length - 1; i++){if(isABC(str[i]) && !isABC(str[i + 1])){count++;}}return count;}alert(countOfWord("Yes, she*is&my@love."));//判断单个字符是否是字母function isABC(charStr){if(charStr >= "a" && charStr <= "z" || charStr >= "A" && charStr <= "Z"){return true;}else{return false;}}
4、实现函数,查找子串出现的次数,返回字符串str中出现substring的次数
传入:"abcabcabc","abc"
返回:3
function countOfStr(supStr, subStr){var arr = supStr.split(subStr); //通过短字符串,使长字符串进行分割return arr.length - 1; //首位两个空值,中间两个空值,以abc分割arr.length = 4}alert(countOfStr("abcabcabc","abc"));
5、已知前锋邮箱的用户名只能由数字字母下划线组成,域名为@100phone.com,
判断一个字符串是否是千峰邮箱,是返回true,不是返回false
mail@1000phone.com 是
$mail@1000phone.com 不是
mail@1000phone.comp 不是
function isEmail(email){//1、查找@符号的位置var index = email.indexOf("@");if(index == -1){return false;}else{var endStr = email.substring(index);if(endStr != "@1000phone.com"){return false;}else{//2、判断用户名是否符合数字字母下划线var username = email.substring(0, index);var isYes = true; //假设都符合for(var i = 0; i = "a" && charStr <= "z" || charStr >= "A" && charStr <= "Z" || charStr >= "0" && charStr <= "9" || charStr == "_"){return true;}else{return false;}}
字符串_敏感词过滤
表单元素,获取其中内容,通过.value的属性
双标签节点 innerHTML属性,获取标签间内容
要求:
1、敏感词都过滤 正则表达式
2、将敏感词替换成* replace( )
字符串_表单验证
事件驱动函数 onclick
onblur 失去焦点

点击输入框内部时, 没有任何反应,但点击输入框外部时,会有提示信息
6~18个字符,可使用字母、数字、下划线,需以字母开头
6~18个字符,可使用字母、数字、下划线,需以字母开头
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
