目录
字符串方法_toLowerCase()/toUpperCase()
字符串
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中
'xiaotong'
"xiaotong"
单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号
'key = "value"'
"It's a long itxiaotong"
如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。双引号字符串内部使用双引号,也是如此
'Did she say \'Hello\'?'
// "Did she say 'Hello'?"
"Did she say \"Hello\"?"
// "Did she say "Hello"?"
温馨提示
字符串默认只能写在一行内,分成多行将会报错
如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠
var longString = 'Long \
long \
string';
longString
// "Long long long string"
转义
反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符
\0 :null(\u0000)
\b :后退键(\u0008)
\f :换页符(\u000C)
\n :换行符(\u000A)
\r :回车键(\u000D)
\t :制表符(\u0009)
\v :垂直制表符(\u000B)
' :单引号(\u0027)
" :双引号(\u0022)
\ :反斜杠(\u005C)
length 属性
length属性返回字符串的长度,该属性也是无法改变的
var s = 'itxiaotong';
s.length // 9
字符串转码
Base64转码
所谓 Base64就是一种编码方法,可以将任意值转成 0~9、A~Z、 a-z、+和/这64个字符组成的可打印字符。使用它的主要目的,不是为了加密,而是为了不出现特殊字符,简化程序的处理
JavaScript 原生提供两个 Base64 相关的方法
btoa():任意值转为 Base64 编码
atob():Base64 编码转为原来的值
var string = 'Hello World!';
btoa(string) // "SGVsbG8gV29ybGQh"
atob('SGVsbG8gV29ybGQh') // "Hello World!"
温馨提示
中文是不可以进行处理的
如果非要处理中文,需要在增加两个方法
encodeURIComponent()
decodeURIComponent()
function b64Encode(str) {
return btoa(encodeURIComponent(str));
}
function b64Decode(str) {
return decodeURIComponent(atob(str));
}
b64Encode('你好') // "JUU0JUJEJUEwJUU1JUE1JUJE"
b64Decode('JUU0JUJEJUEwJUU1JUE1JUJE') // "你好"
字符串方法_charAt()
charAt 方法返回指定位置的字符,参数是从 0 开始编号的
var s = new String('itxiaotong');
s.charAt(1) // "t"
s.charAt(s.length - 1) // "n"
如果参数为负数,或大于等于字符串的长度, charAt 返回空字符串
'itxiaotong'.charAt(-1) // ""
'itxiaotong'.charAt(9) // ""
字符串方法_concat()
concat 方法用于连接两个字符串,返回一个新字符串,不改变原字符串
var s1 = 'itxiaotong';
var s2 = 'txc';
s1.concat(s2) // "itxiaotongtxc"
s1 // "itxiaotong"
该方法可以接受多个参数
'txc'.concat('itxiaotong', 'bjtxc') //"txcitxiaotongbjtxc"
如果参数不是字符串, concat 方法会将其先转为字符串,然后再连接
var one = 1;
var two = 2;
var three = '3';
''.concat(one, two, three) // "123"
字符串方法_slice()
slice 方法用于从原字符串取出子字符串并返回,不改变原字符串。 它的第一个参数是子字符串的开始位置,第二个参数是子字符串的 结束位置(不含该位置)
'itxiaotong'.slice(0, 4) // "it"
如果省略第二个参数,则表示子字符串一直到原字符串结束
'itxiaotong'.slice(2) // "xiaotong"
如果参数是负值,表示从结尾开始倒数计算的位置,即该负值加上字符串长度
'itxiaotong'.slice(-7) // "xiaotong"
'itxiaotong'.slice(0, -7) // "it"
'itxiaotong'.slice(-2, -1) // "n"
如果第一个参数大于第二个参数, slice 方法返回一个空字符串
'itxiaotong'.slice(2, 1) // ""
字符串方法_substring()
substring 方法用于从原字符串取出子字符串并返回,不改变原字符串,跟 slice 方法很相像。它的第一个参数表示子字符串的开始位置,第二个位置表示结束位置(返回结果不含该位置)
'itxiaotong'.substring(0, 2) // "it"
如果省略第二个参数,则表示子字符串一直到原字符串的结束
'itxiaotong'.substring(2) // "xiaotong"
如果第一个参数大于第二个参数, substring 方法会自动更换两个参数的位置
'itxiaotong'.substring(9, 2) // "xiaotong"
// 等同于
'itxiaotong'.substring(2, 9) // "xiaotong"
如果参数是负数, substring 方法会自动将负数转为0
'itxiaotong'.substring(-3) // "itxiaotong"
'itxiaotong'.substring(2, -3) // "it"
由于这些规则违反直觉,因此不建议使用 substring 方法,应该优先使用 slice
字符串方法_substr()
substr 方法用于从原字符串取出子字符串并返回,不改变原字符串, 跟 slice 和 substring 方法的作用相同
substr 方法的第一个参数是子字符串的开始位置(从0开始计算), 第二个参数是子字符串的长度
'itxiaotong'.substr(2, 7); // xiaotong
如果省略第二个参数,则表示子字符串一直到原字符串的结束
'itxiaotong'.substr(2) // "xiaotong"
如果第一个参数是负数,表示倒数计算的字符位置。如果第二个参数是负数,将被自动转为0,因此会返回空字符串
'itxiaotong'.substr(-7) // "xiaotong"
'itxiaotong'.substr(4, -1) // ""
字符串方法_indexOf()/lastIndexOf()
indexOf 方法用于确定一个字符串在另一个字符串中第一次出现的位 置,返回结果是匹配开始的位置。如果返回 -1 ,就表示不匹配
'hello world'.indexOf('o') // 4
'itxiaotong'.indexOf('txc') // -1
indexOf 方法还可以接受第二个参数,表示从该位置开始向后匹配
'hello world'.indexOf('o', 6) // 7
lastIndexOf 方法的用法跟 indexOf 方法一致,主要的区别是 lastIndexOf 从尾 部开始匹配, indexOf 则是从头部开始匹配
'itxiaotong'.lastIndexOf('z') // 5
字符串方法_trim()
trim 方法用于去除字符串两端的空格,返回一个新字符串,不改变原字符串
' hello world '.trim()
// "hello world"
该方法去除的不仅是空格,还包括制表符( \t 、 \v )、换行符 ( \n )和回车符( \r )
'\r\nitxiaotong \t'.trim() // 'itxiaotong'
ES6扩展方法, trimEnd() 和 trimStart() 方法
" itxiaotong ".trimEnd(); // itxiaotong
" itxiaotong ".trimStart(); // itxiaotong
字符串方法_toLowerCase()/toUpperCase()
toLowerCase 方法用于将一个字符串全部转为小写, toUpperCase 则是全部转为大写。它们都返回一个新字符串,不改变原字符串
'Hello World'.toLowerCase()
// "hello world"
'Hello World'.toUpperCase()
// "HELLO WORLD"
将字符串首字母变为大写
itxiaotong'.charAt(0).toUpperCase() +
'itxiaotong'.substr(1);
字符串方法_search()/replace()
search 方法确定原字符串是否匹配某个子字符串,返回值为匹配的第一个位置。如果没有找到匹配,则返回 -1 。
'itxiaotong,txc'.search('xia') // 2
replace 方法用于替换匹配的子字符串
'txcxiaotong'.replace('txc', 'it') // "itxiaotong"
字符串方法_split()
split 方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组
'it|txc|xiaotong'.split('|') // ["it", "txc","xiaotong"]
如果分割规则为空字符串,则返回数组的成员是原字符串的每一个字符。
'a|b|c'.split('') // ["a", "|", "b","|","c"]
如果省略参数,则返回数组的唯一成员就是原字符串
'it|txc|bz'.split() // [it|txc|bz]
split 方法还可以接受第二个参数,限定返回数组的最大成员数。
'it|txc|bz'.split('|', 0) // []
'it|txc|bz'.split('|', 1) // ["it"]
'it|txc|bz'.split('|', 2) // ["it", "txc"]
'it|txc|bz'.split('|', 3) // ["it", "txc","bz"]
'it|txc|bz'.split('|', 4) // ["it", "txc","bz"]