# 字符串 API

# 数组 API

对数组元素排序,默认是按照Unicode码从小到大排序

sort(function(a, b){
  return a-b;    //按照数字从小到大排序
  //return b-a;  //按照数字从大到小排序
});

push()   // 往数组的末尾添加元素,返回数组的长度
pop()    // 删除数组末尾的元素,返回删除的元素
pop()    // 删除数组末尾的元素,返回删除的元素
shift()  // 删除数组开头的元素,返回删除的元素
练习
  • 创建数组,包含有多个员工数据(对象),包含属性有编号、姓名、工资

# 二维数组

数组中的每个元素也是数组

var  arr = [ 
  [],
  [],
  [],
  ... 
]
// 访问二维数组中的元素   arr[下标][下标]

# 字符串

包装对象: 目的是让原始类型像引用类型一样,具有属性和方法。
JS提供了3中包装对象: String、Number、Boolean

将任意数据转为字符串

new String()  // 返回对象  使用和字符串没有区别
    String()  // 返回字符串

//包装成字符串对象
var str1 = new String(3);
//console.log(str1, typeof str1);
//console.log(str1 + 'b');
//将任意的数据转为字符串
var str2=String(true);
//console.log(str2, typeof str2);
var str3 = 'a';

# 转义字符

转换字符的意义
用法:放在要转换意义的字符前边

//  \'   将特殊意义的引号转成普通字符
//  \n  将字符n转换成换行符
//  \t   将字符t转换成制表符(tab键效果)

//转义字符  \
console.log('It\'s a dog');
console.log('hello \no world');
console.log('a\tb');
console.log('welcome to chi\\na');

# 字符串 API

var str = 'javascript';


// 获取字符串的长度
length
console.log( str.length );
console.log( str[0] );


// 获取下标对应的字符,也可以使用数组形式  字符串[下标]
charAt() 
console.log( str.charAt(1) );
// 遍历字符串,获取每个字符
for(var i = 0; i < str.length; i++){
  console.log( str.charAt(i) )
}


// 查找某个字符串出现的下标,value要查找的字符串,start开始的下标,默认是0,如果找不到返回-1
indexOf(value,start) 
// 获取某个字符串的下标
console.log( str.indexOf('a',2) );


// 查找某个字符串最后一次出现的下标,找不到返回-1
lastIndexOf(value)  
// 倒着查找
console.log( str.lastIndexOf('m') );


// 将英文字母转大写
toUpperCase()  
//转大写
console.log( str.toUpperCase() );


// 将英文字母转小写
toLowerCase()
//转小写
console.log( str.toLowerCase() );


// 截取字符串,start开始的下标,end结束的下标,不包含end本身,end为空截取到最后,负数表示倒数。
slice(start, end) 
// 截取字符串
console.log( str.slice(4) );
console.log( str.slice(4,7) );
console.log( str.slice(-3,-1) );


// 截取字符串,start开始的下标,count截取的长度,如果count为空,截取最后;start为负数表示倒数。
substr(start, count)  
//按长度来截取
console.log( str.substr(4,3) );
console.log( str.substr(4) );
console.log( str.substr(-3,2) );


// 截取字符串,start开始的下标,end结束的下标,如果end为空截取到最后,如果下标为负数自动转成0。
substring(start, end) 
console.log( str.substring(4) );
console.log( str.substring(4,7) );
//负数转为0
console.log( str.substring(-3,-1) );
console.log( str.substring(3,1) );


/**
 * 对比slice和substring
 * slice中下标允许使用负数表示倒数,substring下标负数自动转成0;slice中下标的顺序start小于end,substring中下标大小不分顺序。
 */


// 将数组按照指定的分割符转为字符串
join(sep)
var arr=['a','b','c'];
// 将数组按照指定的分割符转为字符串
console.log( arr.join('-') );


// 将字符串按照指定的字符分割成数组,sep是指定的字符
split(sep)  
var str='a-b-c';
console.log( str.split('-') );
练习
  • 声明变量保存字符串,判断该字符串是否为邮箱格式(@),如果有打印'合法的邮箱',否则打印'非法的邮箱'
  • 声明变量保存4个英文字母,使用无限循环弹出提示框,输入验证码(不区分大小写),如果输入正确,结束循环。
  • 声明变量保存邮箱,分别截取用户名和服务器名称
  • 声明变量保存省份证号,截取出生的年月日和性别,打印 '小然的生日为1980年11月11日 性别男'
  • 截取字符串,start开始的下标,end结束的下标,如果end为空截取到最后,如果下标为负数自动转成0。
  • 使用split获取邮箱的用户名和服务器名称

# 匹配模式(掌握)

作用:用于查找、替换字符串

var str='xiaoran产于上世纪七八十年代,Xiaoran至今性能依然强劲,xiaoran一顿饭能吃10盘羊肉,XIAORAN是一个美男子';

// indexOf
console.log( str.search('XIAORAN') );

// 用于查找满足条件的第一个的下标,类似于indexOf,如果找不到返回-1   /xiaoran/i  
search(value)  
console.log( str.search(/XIAORAN/i) );

// 用于查找满足条件的字符串,返回一个数组
match(value)  
console.log( str.match(/XIAORAN/ig).length );

// 查找并替换,value1要查找的字符串,value2要替换的字符串
replace(value1,value2)  
console.log( str.replace(/xiaoran/gi,'***') );

// 忽略大小写
i->ignore  
// 全局查找
g->global  

# Math对象

不需要创建,可以直接使用

PI        // 取圆周率
abs()     // 取绝对值
floor()   // 向下取整
ceil()    // 向上取整
round()   // 四舍五入取整
max()     // 取一组数字最大
min()     // 取一组数字最小
pow()     // 取 x 的 y 次幂
random()  // 取随机数   >=0   <1

//获取圆周率
console.log( Math.PI );

// 取绝对值 
console.log( Math.abs(18-21) );

// 向上取整
console.log( Math.ceil(5.01) );

// 向下取整
console.log( Math.floor(4.999) );

// 四舍五入取整
console.log( Math.round(4.49) );

// 取一组数字的最大值
console.log( Math.max(23, 9, 78, 45, 6) );

// 取一组数字的最小值
console.log( Math.min(23, 9, 78, 45, 6) );

// x 的 y 次幂
console.log( Math.pow(5,2) );

// 取随机  >=0  <1
console.log( Math.random() );

# 课后任务

练习
  • 将一句英文每个单词的首字母大写,其余小写
  • 随机产生 0~9 之间的一个整数
  • 预习Date对象