javascript语法基础系列之字符串基本用法


javascript语法基础系列之字符串基本用法

字符串

有两种形式的字符串: 基本类型、对象类型(临时对象)
注意:字符串所有的方法看上去是返回一个修改后的字符串,实际上返回的是一个新的字符串值

1
2
3
4
5
6
// 字符串 基本类型 String
var str1 = 'Hello World';
console.log(typeof str1);
// 字符串 对象类型 Object
var str2 = new String('Hello World');
console.log(typeof str2);

对象类型的字符串封装了一些属性及方法,而基本类型则没有
可以直接用基本类型字符串调用字符串对象封装的属性及方法,无须手动转换

字符串的长度

字符串中的length是只读属性,不可更改
按各国标注字符来计算长度

1
2
3
4
5
// 按各国标注字符串来计算长度
var str = "实现伟大的中国梦";
console.log(str.length);
// 获取对应下标处的字符
console.log(str[3]); // 大

字符串的常用方法

1.charAt(index)

功能:获取对应下标处的字符
参数:下标
返回值:获取到的字符,没有字符则返回空字符串

1
2
3
4
var str = "what color do yu lile";
console.log(str.charAt(3)); // t
console.log(str.charAt(30)); // 空字符串(“”)
console.log(typeof str.charAt(30)); // string

2.charCodeAt(index)

功能:获取对应下标处的字符编码
参数:下标
返回值:获取到的字符编码(0-65535),没有对应 的下标则返回NaN

1
2
3
4
var str = "what color do yu lile";
console.log(str.charAt(3)); // 116
console.log(str.charAt(30)); // NaN
console.log(typeof str.charAt(30)); // number

3.String.fromCharCode(ASCII码)

功能:获取ASCII码对应的字符

1
2
3
4
// 参数:ASCII
// 返回值:对应的字符
var charStr = String.fromCharCode(117);
console.log(charStr); // u

4.toLowerCase() toUpperCase()

功能: 字符串的大小写转换
返回值: 转换后的字符串
注意:不会改变原字符串

1
2
3
4
5
6
7
8
9
var str = 'hello';
// 全部转换为大写
console.log(str.toUpperCase()); // HELLO
// 不会更改原有字符串
console.log(str); // hello
// 全部转换为小写
console.log(str.toLowerCase()); // hello
// 不会更改原有字符串
console.log(str); // hello

5.==, === 判断相等

== 只比较值相等,不对类型进行比比较
比较之前会先进行类型统一
=== 要求值和类型均相等

1
2
3
4
console.log(1 == "1");   // true
console.log(1 == true); // true
console.log(1 === "1"); // false
console.log(1 === "1"); // false

6. localeCompare()

功能:字符串比较大小
规则:两个字符串从下标为0的字符开始比较
如果谁的ASCII码值大,那么谁大,如果相等继续比较后面的字符,当两个字符不想等时停止比较,此时谁的ASCII码值大谁就大
返回值:
1– 前面字符串大于后面的字符串
-1– 前面的字符串小于后面的字符串
0 – 前面的字符串等于后面的字符串

1
2
3
4
5
6
7
8
9
10
vat str1 = 'abcd';
var str2 = 'abdd';
var retVal = str1.localCompare(str2);
if (retVal > 0){
console.log(str1 + '>' + str2);
} else if (retVal < 0){
console.log(str1 + '<' + str2);
} else {
console.log(str1 + '==' + str2);
}

7.indexof(searchValuem, fromindex)

功能:从左至右查找第一次出现的字符串
参数:要查找的字符串
返回值:子串第一次出现的下标,如果没有子字符串,则返回-1

8. lastIndexOf(searchValue, fromindex)

功能:从右至左查找第一次出现的字符串
参数:
searchValue:要查找的字符串
fromindex:可选参数,表示从指定下标处开始往后查找
返回值: 子串第一次出现的下标,如果没有子字符串,则返回-1

1
2
3
4
5
6

va str = "Tom is a good man, Tom is a nice man";
// 从左至右查找第一次出现'is'字符串的下标
console.log(str.indexof('is')); // 4
// 从右至左查找第一次出现'is'字符串的下标
console.log(str.lastIndexof('is')); // 23

9.replace(oldStr, newStr)

默认只能替换第一次出现的oldStr
通过正则表达式可以实现全部替换

10.substring(start,stop)

定义:substring()方法用于提取字符串中介于两个指定下标之间的字符
参数
start:必须。一个非负的整数,要提取的子串的第一个字符在原字符中的位置
end:可选。一个非负的整数,要提取的子串的最后一个字符在原字符中的位置+1
如果省略该参数,那么返回的子串会一直截取到原字符串的末尾
返回值:一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。
注意:
如果start与stop相等,那么该方法返回的就是一个空串(即长度为0的字符串)
如果start比stop大,那么该方在提取字符串之前会先交换两个参数

11.substr(start,length)

定义:substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
参数:
start:必需。要抽取的字串的起始下标,必须是数值,如果是负数,那么该参数声明从字符串的尾部开始的位置算起,也就是说,-1 指字符串中最后一个字符,-2指倒数第二个字符,依次类推
length:可选。字符串中的字符数,必须是数值,如果省略了该参数,那么返回从原字符串开始位置到结尾的字符串。
返回值: 一个新的字符串,包含从 原字符串的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到原字符串的结尾的字符。

注意:substring() & sunstr() 均不会改变原有的字符串

stringObject.split(separator, howmany);

定义:split() 方法用于把一个字符串分割成字符串数组
参数:
separator 必须。字符串或正则表达式,从该参数指定的位置分割stringObject。
howmany 可选。该参数可指定返回数组的最大长度。如果设置了该参数,整个字符串都会被分割,不考虑它的长度。
返回值:一个字符串数组
注意:如果吧把空字符串(‘’)用作separator,那么
身体stringObject 中的每个字符之间都会被分割

12.concat()

用于将一个多个字符串拼接起来

13.trim()

这个方法会创建一个字符串的副本,删除前缀及后缀的所有空格,然后返回结果

14.模式匹配

1
2
3
4
5
6
7
var text = "testing:1,2,3"; // 实力文本
var pattern = /\d+/g; // 匹配所有的的包含一个或多个的实例
pattern.test(text); // true : 匹配成功
text.search(pattern); // 9 首次匹配成功的位置
text.match(pattern); // ['1', '2', '3'] 所有匹配组成的数组
text.replace(patten, "#"); // "testint:# # #"
text.split(/D+/); // ["", "1", "2", "3"] : 用非数字字符截取字符串

math 对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

// 四舍五入
console.log(Math.round(4.5)); // 5
// 向上取整
console.log(Math.ceil(31.)); // 4
// 向下取整
console.log(Math.floor(3.9)); // 3
// 取最大值
console.log(Math.max(4,4,6,76,89,31)); // 89
// 取最小值
console.log(Math.min(3,4,7,99,0)); // 0
// 取绝对值
console.log(Math.abs(-10)); // 10
// x的y 次方
console.log(Math.pow(2,3)); // 8
// 开平方
console.log(Math.sqrt(25)); // 5
// 生成一个0-1之间的随机数
console.log(Math.random()); // 0-1之间的随机数