activex传字符串数组_温习笔记 字符串类型

1.字符串与数组

~字符串可以被视为字符数组,可以使用数组的运算符,用来返回某一字符

const str='hello';
str[0]  // h
str[str.length-1] //o

~但字符串与数组的相似也经此而已。实际上无法改变单个字符

const str='hello';

str[1]='x'
str /hello/
delete str[0]
str /hello/

~字符串的length属性

length属性返回字符串长度,但是属性是无法改变的

var s = 'hello';
s.length // 5

s.length = 3;
s.length // 5

s.length = 7;
s.length // 5

2.Base64转码

~所谓Base64就是一种编码方法,可以将任意值转变为 0-9 A-z +和/ 这64个字符组成的打印字符。使用它的主要目的不是加密,而是为了不出现特殊字符,简化程序处理

~JavaScript原生提供两个Base64方法

btoa() //将任意值转化为Base64编码

atob() //将Base64编码转化为原来的值

var string=btoa('Hello World!');
btoa(string) // "SGVsbG8gV29ybGQh"
atob('SGVsbG8gV29ybGQh') // "Hello World!"

注意这两个方法不适用于非ASCII码的字符(比如中文),会报错

btoa('你好') //报错

如果想要将非ASCII码字符转化为base64,必须中间插入一个转码环节,再使用这两个方法

		function base64Encode(data){
			return btoa(encodeURIComponent(data))
		}
		function base64Decode(date){
			return decodeURIComponent(atob(date))
		}
		console.log(base64Encode('你好'))  //JUU0JUJEJUEwJUU1JUE1JUJE
		console.log(base64Decode('JUU0JUJEJUEwJUU1JUE1JUJE')) //你好

String 对象

~字面量与构造函数创建的不同

	let str=new String('ss')
	let str2='12'
	console.log(str,typeof str,typeof str2) //'ss' 'object' 'string'

静态方法

~String.charCodeAt()

charCodeAt()方法返回字符串指定位置的 Unicode 码点(十进制表示),相当于String.fromCharCode()的逆操作。

'abc'.charCodeAt(1) // 98
'abc'.charCodeAt() // 97 没有传下标,就是第一个字符

~String.fromCharCode()

该方法的参数是一个或多个数值,代表 Unicode 码点,返回值是这些码点组成的字符串。

String.fromCharCode() // ""
String.fromCharCode(97) // "a"
String.fromCharCode(104, 101, 108, 108, 111)
// "hello"

~.charAt()

charAt返回指定下标的字符,参数从0开始

let str=new String('string')
str.charAt(1) //t
str.charAt(str.length-1) //g

~concat()

concat可以用来字符串和数组合并,返回一个新的不改变原来的变量

'aa'.concat('bb')  //'aabb'

该方法可以接收多个参数

'aa'.concat('bb','cc') // 'aabbcc'

如果参数不是字符串,会先将其转化为字符串,再连接

''.concat(1,2,3) //'123'

~slice()

slice()方法用于截取字符串,不会改变原字符串。第一个参数是开始的位置,第二个参数是结束的位置,不填第二个截取到结尾

let str='ssdaadad'
str.slice(2,3) //d
str.slice(2) //daadad

如果参数为负值,表示从结尾开始计算

‘JavaSricpt’.clice(-1) //t
‘JavaSricpt’.clice(-4,-2) //ic
‘JavaSricpt’.clice(0,-6) //Java

~substring()

和slice基本一样,不改变原值,第一个参数开始,第二个参数结束

~substr()

和slice基本一样,不改变原值,第一个参数开始,第二个参数字符串的长度

'java'.substr(2,2) //va

~indexOf()

用来确定一个字符串在另一个字符串中出现的位置,返回的结果是匹配的位置。如果返回-1则表示匹配不到

'java'.indexOf('a') //1
'java'.indexOf('b') //-1

indexOf还可以接收第二个参数,表示从哪里开始匹配

'java'.indexOf('a',2)  //3

lastIndexOf() 用法和它一样,区别是从尾部开始匹配

'hello world'.lastIndexOf('o') // 7

lastIndexOf的第二个参数表示从该位置起向前匹配

'hello world'.lastIndexOf('o', 6) // 4

~trim()

trim()方法用来去除字符串两端的空格,返回一个新字符串,不改变原字符串

'  hi hh  '.trim()

~toLowerCase() toUpperCase

toLowerCase()方法用来将字符串全部转为小写,toUpperCase()则是全部转为大写。他们都返回一个新字符串,不改变原数据

'sssx'.toUpperCase() // SSSX
'XXX'.toLowerCase() //xxx

~match()

match() 方法用来确定原字符串是否匹配某个子字符串,返回一个数组,成员为匹配到的第一个字符串还有下标和原字符串,没有匹配到返回null

'cat tiger dog'.match('dog') //['dog']

3bb69b6dd630c56afd1c980f5b0da4e9.png

~search()

search()方法基本等同于match(),只返回下标,没有匹配到返回 -1

~replace()

replace()方法用于替换匹配到的字符串,一般情况下只替换掉第一个匹配到的,(多次替换使用待有/g的正则表达式)

~split()

split()方法用来将分割字符串,返回一个分割出来的数组

'a|b|c'.split('|') //[a,b,c]
'abc'.split('') //[a,b,c]

如果不传递参数的话,将会返回一个原字符串的数组

'hi hellow'.slipt() //hi hellow

如果满足匹配规则的两个部分,紧邻着(被分割的部分中间没有其他字符),则返回数组中有一个空字符串

'a||b'.split() //[a,'',b]

如果满足匹配规则的字符串出现在开头或者结尾,则在返回的数组中在开头或结尾有字符串

'|a|b'.split('|') //['',a,b]
'a|b|'.split('|') //[a,b,'']

split方法接收的第二个参数,限定返回数组的最大长度

'a|b|c'.split('|', 0) // []
'a|b|c'.split('|', 1) // ["a"]
'a|b|c'.split('|', 2) // ["a", "b"]
'a|b|c'.split('|', 3) // ["a", "b", "c"]
'a|b|c'.split('|', 4) // ["a", "b", "c"]

~localeCompare()

localeCompare()方法用来比较两个字符串的‘大小’,长返回1 等于返回0 小于返回-1

'apple'.localeCompare('banana') // -1
'apple'.localeCompare('apple') // 0

该方法考虑到了自然语言的顺序。距离来说,一般情况下,大写字母应该大于小写字母

'B' > 'a' // false

上面代码中,字母B小于字母a。因为 JavaScript 采用的是 Unicode 码点比较,B的码点是66,而a的码点是97。

但是,localeCompare方法会考虑自然语言的排序情况,将B排在a的前面。

'B'.localeCompare('a') // 1

上面代码中,localeCompare方法返回整数1,表示B较大。

localeCompare还可以有第二个参数,指定所使用的语言(默认是英语),然后根据该语言的规则进行比较。

'ä'.localeCompare('z', 'de') // -1
'ä'.localeCompare('z', 'sv') // 1

上面代码中,de表示德语,sv表示瑞典语。德语中,ä小于z,所以返回-1;瑞典语中,ä大于z,所以返回1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值