Skip to content
On this page

字符串

在 js 中用单(双)引号包裹起来的都是字符串

字符串就是由零到多个字符串组成的

第一个字符索引 0 第二个字符索引 1 ... 有 length 的属性,存储的是当前字符串中字符的个数(字符串的长度)

以数字作为索引,从零开始的

javascript
var str = 'welcome to credan!'
console.log(str[0]) // 'w' 第一个字符
console.log(str[length]) // 46
console.log(str[str.length-1]) '!' // 最后一个字符
console.log(str[100]) //  undefined 如果指定的索引不存在获取的结果是 undefined
1
2
3
4
5

真实项目中,我们经常操作字符串,此时我们需要掌握常用的一些字符床操作方法

console.dir(String.prototype)

javascript
12 - > number
'12' -> string
'[12,23]' -> string
1
2
3

charAt && charCodeAt

str.charAt(索引)

返回指定索引位置的字符,和 str【索引】的区别在于,当指定的索引不存在的时候,中括号的方式获取的是 undefined,而 charAt 获取的是空字符串

str.charCodeAt(索引)

在 charAt 基础上,把获取的字符变为 Unicode 编码值(对应 ASCll 码表)

  • 48-57 0-9
  • 65-90 A-Z
  • 97-122 a-z
  • ...

String.fromCharCode(十进制的 Unicode 值),把值按照 ascll 码表中的信息,转为原有字符,charCodeAt 正好对应

实现字符串截取的三个办法

  • 实现字符串截取的三个办法
  • str.substr(n.m) : 从索引 n 开始,截取 m 个字符
  • str.substring(n,m): 从索引 n 开始,截取到索引为 m 处(包含 m),把找到的部分截取
  • str.slice(n,m): 和 substring 语法意义,区别在于 slice 支持一负数做索引

当索引是负数的时候,浏览器在处理的时候,是用字符串的总长度加上负数索引,然后按照正数处理操作

细节:

  • 如果只传递了 n(str.substr(n)/str.substring(n)), 相当于索引 n 开始的一直截取到字符串的末尾
  • 如果传递的索引超出最大限制,也是吧能截取的部分截取掉即可
  • 如果一个参数都不传递:相当于吧证书字符串都截取(字符串的克隆)

indexOf && lastIndexOf

  • str.indexOf 获取当前字符在字符串中第一次出现位置的索引
  • str.lastIndexOf 获取的是最后一次出现位置的索引

如果当前字符在字符串中没有出现过,结果是 -1: 我们根据这个规律可言验证一下当前字符串中是否包含某个字符

javascript
if(str.indexOf('?')===-1){
	// => 没有出现过
}

if(str.indexOf('?')>=-1){
	// => 出现过
}
1
2
3
4
5
6
7

split

str.split 按照某个字符串分成数组中的某一项,和数组中的 join 方法是对应

replace

str.replace 实现字符的替换 执行一次 replace 只能替换一次,如果有好几个都需要替换,在不适用正则的情况下,我们需要执行很多次 replace

有些需求及时执行很多次 repalce 也实现不了,此时需要使用正则处理,真实项目中 replace 一般都是和正则搭配使用的

trim && trimLeft && trimRight

  • str.trimLeft : 去除字符串开始的口空格
  • str.trimRight : 去除字符串结尾的口空格
  • str.trim 去除字符串首位的空格

toString()

第一种是使用几乎每个值都有的 toString() 方法。多数情况下,调用 toString() 方法不必传递参数,但在调用数值的 toString() 方法时,可以传递一个参数:输出数值的基数。默认情况下,toString() 方法以十进制格式返回数值的字符串表示。而通过传递基数,toString() 可以输出二进制、八进制、十六进制等。

javascript
var num = 10;
alert(num.toString());    // "10"
alert(num.toString(2));  // "1010"
alert(num.toString(8));  // "12"
alert(num.toString(10));  // "10"
alert(num.toString(16));  // "A"
1
2
3
4
5
6
沪ICP备20006251号-1