js基础 字符串操作

一、包装类型
包装对象(类型) 目的:让原始类型的数据也可以像引用类型一样,具有属性和方法。
js中有三种包装类型
      String类型,Number类型,Boolean类型 

二、转义字符
把普通的字符串,转换成具有特定意义的字符(\)

\n      换行
\t       制表符
\'       产生一个单引号 '
\\       产生一个普通的 \ 
/转义字符
var str = 'hello\nworld';  //\n换行
console.log(str);    //hello
                     //world

var str1 = 'hello\tworld'; //\t
console.log(str1);   //hello   world

var str2 = 'hello \'world\'';
console.log(str2);   //hello 'world'

var str3 = 'hello \\world';
console.log(str3);   //hello \world

三、字符串常用操作

toUpperCase()     英文字符转成大写
toLowerCase()     英文字符串转成小写
charAt()      获取指定下标的字符
charCodeAt()     获取指定下标字符的Unicode码
indexOf(value,[start])     获取某个字符对应的下标。value:要查找的字符;start:从哪个位置开始查找,默认为0
laseIndexOf(value,[start])     同indexOf作用一 致,区别在于:查找最后一次出现的位置。
slice(start,[end])      返回从start到end-1范围内的字符,若省略end,直接获取到字符串结尾 若为负数,表示倒数第几个,倒数第一为-1.
substring(start,[end])     返回从start到end-1范围内的字符,若省略,直接获取到字符串结尾
split(sep)     按照指定格式分割字符串,返回一个数组 
////字符串转换成大写小写
var str1 = 'Hello World';
var str2 = new String('Hello World');  //这个new出来的也可以有以下操作
//转换成大写
var str1 = str1.toUpperCase();
console.log(str1);    //HELLO WORLD
//转换成小写
var str1 = str1.toLowerCase();
console.log(str1);    //hello world
toUpperCase()、toLowerCase()

相关练习:初始化4个英文字符,弹出提示框输入4个字符,如果输入的不正确,再弹出提示框,直到输入正确

//方法一
var str1 = 'abcd';
var str2 = '';
while(str1!=str2){
   alert('请输入4个字符');
   str2 = prompt('请输入字母');
   str2 = str2.toLowerCase();
   str1 = str1.toLowerCase();
};

//方法二:
while(true){
  var code = 'abCD';
  var str = prompt('输入四个字符');
  str = str.toUpperCase();
  code = code.toUpperCase();
  if(str==code){
	alert('输入正确');
    break;
  };
};

chanAt() 获取指定下标的字符

案例1:
//获取指定位置的字符
var str = 'welcome to china';
var s = str.charAt(5);  
var s1 = str.charAt(7);  
console.log(s);         //m
console.log(s1);        //空格

案例二:
//身份证18数字(x)位组成
//110000199503012516
var num = '110000199503012516';
//通过身份证号查看姓名,查看第17个字符是奇数还是偶数
//奇数:男,偶数:女
num = num.charAt(16);
if(num%2==0){
  console.log('女');
}else{
  console.log('男')
 };

charCodeAt() 获取指定下标字符的Unicode码

var str = 'hello 中国';
console.log(str.charCodeAt(5));  //5,空格的Unicode码值为32

indexOf(value,[start]) 获取某个字符对应的下标
laseIndexOf(value,[start]) 同indexOf作用一致,区别在于:查找最后一次出现的位置。 

var str = 'welcome to china';
console.log(str.indexOf('c'));      //3
console.log(str.indexOf('to'));     //8
console.log(str.lastIndexOf('c'));  //11
console.log(str.lastIndexOf('mn')); //-1(找不到,返回-1)

相关练习:检测一个字符串是否为邮箱格式,只需要检测是否含有@,如果有返回true,否则返回false.

var email = '1269947854@qq.com';
var res = (email.indexOf('@')); //10,没有返回-1,说明含有@
if(res != -1){
  console.log('true');
}else{
  console.log('false');
};

slice(start,[end]) 返回从start到end-1范围内的字符,若省略end,直接获取到字符串结尾。若为负数,表示倒数第几个,倒数第一为-1.

//截取字符串 slice
//案例1:
var str = 'hello javascript';
console.log(str.slice(6));       //javascript
console.log(str.slice(6,10));    //java,10的位置结束,但不包括10
console.log(str.slice(-6));      //script
console.log(str.slice(-6,-3));   //scr

//案例2:
//查看邮箱的用户名和主机名
var email = 'tom@163.com';
var num = email.indexOf('@');
console.log('用户名:' + email.slice(0,num));   //用户名:tom
console.log('主机名:' + email.slice(num+1));  //主机名:163.com

//案例3:
//通过身份证号获取出生日期--->1997年10月20日(格式)
var str = '11024619971020357X';
var year = str.slice(6,10);
var month = str.slice(10,12);
var day = str.slice(12,14);
console.log('出生日期为:' + year + '年' + month + '月' + day + '日'); 
//出生日期为:1997年10月20日

//案例3:
//把英文单词的首字母转换成大写
var str = 'hello';
var str1 = str.slice(0,1);   //h
str1 = str1.toUpperCase();   //H
var str2 = str.slice(1);     //ello
console.log(str1+str2);      //Hello

split(sep) 按照指定格式分割字符串,返回一个数组

/案例1:
//数组按照指定格式转换成字符
var arr = ['tom','jerry','david'];
console.log(arr.join('|'));  //tom|jerry|david

//把固定某个格式的字符转换成数组
var str = 'tom|jerry|david';
//split
var arr1 = str.split('|');
console.log(arr1);  //[ 'tom', 'jerry', 'david' ]

案例2:
//使用split()获取用户名和主机名
var email = 'tom@163.com';
var str = email.split('@');
console.log(str);   //[ 'tom', '163.com' ]
console.log('用户名:' + str[0]);  //用户名:tom
console.log('主机名:' + str[1]);  //主机名:163.com

相关练习:
//从服务器读取的数据
//例如:tom@补给兵@60%#jerry@医护兵@80%#david@特种兵@100%
//要求:分割每一个角色;分割每一个角色的属性
//打印出每个角色,每一个角色占一行 

方法一:
var str = 'tom@补给兵@60%#jerry@医护兵@80%#david@特种兵@100%';
var arr = str.split('#');
//console.log(arr);
//[ 'tom@补给兵@60%', 'jerry@医护兵@80%', 'david@特种兵@100%' ]
for(var i=0;i<arr.length;i++){
  var arr2 = arr[i].split('@');
  //console.log(arr2);
  //[ 'tom', '补给兵', '60%' ]
  //[ 'jerry', '医护兵', '80%' ]
  //[ 'david', '特种兵', '100%' ]
  var res = arr2.join('');
  console.log(res);
  //tom|补给兵|60%
  //jerry|医护兵|80%
  //david|特种兵|100%
};

方法二:
var str = 'tom@补给兵@60%#jerry@医护兵@80%#david@特种兵@100%';
var arr = str.split('#');
for(var i=0;i<arr.length;i++){
  var arr2 = arr[i].split('@');
  var str2 = '';
  for(var j=0;j<arr2.length;j++){
    str2 += arr2[j];
  };
  console.log(str2);
};


上一篇: js基础 二维数组
下一篇: js基础 模式匹配
作者邮箱: 203328517@qq.com