JavaScript【字符串方法(charAt()、concat()、slice()、substring()、substr()、indexOf()/lastIndexOf()、trim())】(五)

 

目录

字符串

字符串转码

字符串方法_charAt()

字符串方法_concat()

字符串方法_slice()

字符串方法_substring()

字符串方法_substr()

字符串方法_indexOf()/lastIndexOf()

字符串方法_trim()

字符串方法_toLowerCase()/toUpperCase()

字符串方法_search()/replace()

字符串方法_split()


字符串

字符串就是零个或多个排在一起的字符,放在单引号或双引号之中

'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"]

猜你喜欢

转载自blog.csdn.net/m0_58719994/article/details/132030039