当前位置: 首页 > news >正文

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

相关文章:

  • python爬新闻并保存csv_Python爬虫如何实现自动翻页并将数据存入csv中?
  • python3官网下载教程_Python3 快速入门教程
  • python现在排第几_2019编程语言排行榜:铁打的Python连续3年第一,它居然跌出前十?...
  • 交换机调试工具_工业交换机在工厂中使用需要注意什么?
  • pyqt qtableview 添加下拉框控件_Qt制作桌面小控件-待办列表,从此事情再多也不会忘了
  • 2018 ideal 链接数据_2018 年度 GtiHub 开源项目 TOP 25:数据科学 机器学习
  • .describe() python_Python-Win32com-Excel
  • js 点击选择前和选择后的数据对比_「手把手教python3接口自动化」:结构化数据提取...
  • gpg: 找不到有效的 openpgp 数据。_最新免费电子书网站,就没有找不到的电子书,亲测有效,赶快收藏...
  • python中的点表示什么_Python中的点表示法。方法应该在对象之前还是之后?
  • python内容推荐算法_python 推荐算法
  • 新闻类app页面使用说明书_【好物推荐】备忘录类APP“知了清单”深度使用体验...
  • grep 与条件_【命令解析】Linux系统 grep命令用法详解
  • 左斜杠和右斜杠有什么区别_优先通行权中右方来车先行,右转弯让左转弯,为什么呢?...
  • matlab lu分解求线性方程组_计算方法(三)平方根法及其改进解线性方程组
  • 10个最佳ES6特性 ES7与ES8的特性
  • canvas 五子棋游戏
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • export和import的用法总结
  • JavaScript对象详解
  • JavaScript函数式编程(一)
  • JS基础之数据类型、对象、原型、原型链、继承
  • PHP 7 修改了什么呢 -- 2
  • REST架构的思考
  • windows下使用nginx调试简介
  • Yeoman_Bower_Grunt
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 码农张的Bug人生 - 见面之礼
  • 用element的upload组件实现多图片上传和压缩
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (23)Linux的软硬连接
  • (C++)八皇后问题
  • (Forward) Music Player: From UI Proposal to Code
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (三)Honghu Cloud云架构一定时调度平台
  • (原)Matlab的svmtrain和svmclassify
  • (原創) 物件導向與老子思想 (OO)
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .dwp和.webpart的区别
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .Net CF下精确的计时器
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET 常见的偏门问题
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET企业级应用架构设计系列之结尾篇
  • .NET中使用Protobuffer 实现序列化和反序列化
  • /etc/fstab和/etc/mtab的区别
  • @ModelAttribute使用详解
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [BT]BUUCTF刷题第4天(3.22)
  • [C++] Boost智能指针——boost::scoped_ptr(使用及原理分析)