String对象
重点:JavaScript的字符串是不可变的,String类定义的方法都不能改变字符串的内容。它返回的是全新的字符串,而不是修改原始字符串。所以String的操作非常耗性能。
一、创建字符串
1.使用new关键字创建字符串对象
//创建字符串对象
var str = new String(); //空字符串
var str = new String(任何值);
⒉使用字面量方式创建字符串对象
var str = ""; //空字符串
var str = 'Hello JavaScript';
二、String对象的属性和方法
属性:对象的静态特征的描述;变量存储,使用方法:对象.属性名
方法:对象的动态行为;函数,使用方法:对象.方法();
属性:
length
方法:
提取字符串字符
charAt(下标); //返回指定位置的字符
例:
var str = "hello world";
str.charAt(6);
结果:w
字符串的连接
concat(); //字符串的连接方法
语法:字符串对象.concat(字符串1,字符串2,...,字符串n);
例:
var str = "饿了";
var str2 = "那吃呀";
str.concat(str2); //结果为:"饿了那吃呀"
str.concat(str2,"吃啥呀","想吃啥就吃啥"); //结果为: "饿了那吃呀吃啥呀想吃啥就吃啥"
提取部分字符串
slice(); //截取字符串
语法:字符串对象.slice(start,end);
注:
1、start从0开始数,end从1开始数
2、只有一个参数时,表示从开始位置到最后
3、取值可以为负数,为负数时代表字符串倒着数
4、end小于start时,不会报错,但是截取结果为空字符串
例:
var str = "Apple, Banana, Mango";
var res = str.slice(7,13);
结果:Banana
substring();
语法:字符串对象.substring(start,end);
注:用法与 slice() 方法相同,但是参数不能为负数。
substr(); //截取字符串
语法:字符串对象.substr(start,length);
注:
1、start参数可以为负,为负数时代表字符串倒着数
2、length规定被提取部分的长度
例:
var str = "Apple, Banana, Mango";
var res = str.substr(7,6);
结果:Banana
查找字符串中的字符串
* indexOf(); //返回字符串中指定文本首次出现的位置的下标
语法:字符串对象.indexOf(查找字符,开始位置);
注:
1、开始位置:表示指定从字符串的哪个下标开始查找
2、返回-1表示没有找对应的字符,否则返回对应位置的下标。(es6中,数组也有这个方法)
例:
var str = "Hello JavaScript";
var pos = str.indexOf("Java");
结果:6
查找匹配字符串
match(); //返回匹配的字符串(返回的是一个数组)
语法:字符串对象.match(字符串|正则表达式);
例:
box.match("l");
box.match(/l/g);
替换字符串内容
* replace(); //替换字符串
语法:字符串对象.replace(被替换的字符,替换的字符);
注:
1、 replace()方法不会改变调用它的字符串。它返回的是新字符串。
2、默认地, replace() 只替换首个匹配
3、默认地, replace() 严格区分大小写
例:
var str = "hello world";
str.replace("l", "i"); //只会替换一个
str.replace(/l/g , "i"); //使用正则表达式,替换所有的l
检索字符串中的字符串
search(); //检索字符串中的字符串
语法:字符串对象.search(regexp);
作用:用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
返回值:字符串对象中第一个与regexp相匹配的子串的起始位置。
注:如果没有找到任何匹配的子串,则返回-1。
例:
var box = 'Mr Jacky is a cat';
document.write(box.search("acky")); //返回:4
其他
* split(); //把字符串转换为数组
语法: 字符串对象.split(分隔符);
作用:用于把一个字符串分割成字符串数组。返回的是字符串
trim();
语法:字符串对象.trim();
作用:去掉字符串的前后空格,无法去除中间空格。
Date对象
一、set类
var d = new Date();
//修改日期时间对象的值:
d.setFullYear(2000);
d.setMonth(11); //取值范围0~11
d.setDate(2); //取值范围0~31
d.setHours(12); //取值范围0~23
d.setMinutes(23); //取值范围0~59
d.setSeconds(2); //取值范围0~59
二、get类
getDate(); //返回日期的号数(1-31)
getDay(); //返回星期(0-6)
getMonth(); //返回月份(0-11)
getFullYear(); //返回年份(四位数)
getTime(); //返回1970-1-1 , 毫秒数
三、to类
toLocaleString(); //返回本地时间(字符串),包括日期和时间
toLocaleDateString();
toLocaleTimeString();
四、日期转换
Date.parse(字符串);
正则表达式
定义:正则表达式是使用特定的符号来描述该组字符串的一种方法。即:正则表达式就是一个字符串模板,其本身也是—个字符串。
创建一个正则对象:
var regExp = new RegExp('模式字符串','参数');
var re = /^hello$/; //直接量化方式,建议使用。
使用String的match()进行匹配。
正确,返回string
错误,返回null
使用正则表达式的test()进行匹配
正确,返回true
错误,返回false
以 /^ 匹配一个输入或行的开头
以 $/ 匹配一个输入或一行的结尾
规则如下:
\d 匹配一个字数字符,/\d/ = /[0-9]/
\D 匹配一个非字数字符,/\D/ = /[^0-9]/
\s 匹配一个空白字符,包括\n \r \f \t \v等
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
\w 匹配一个可以组成单词的字符,等于[a-zA-ZO-9]
\W匹配一个不可以组成单词的字符,等于[^a-zA-Z0-9]。
语法规则如下:
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa
? 匹配前面元字符)次或1次,/ba*/将匹配b,ba
(x) 匹配x保存x在名为$1...$9的变量中
x|y 匹配x或y
{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
[^xyz] 不匹配这个集合中的任何一个字符
修饰符
g:全局匹配
i:不区分大小写
m:多行匹配