javascript 字符串操作

2019-03-07  本文已影响0人  素时年锦

一、typeof类型

1. 基本数据类型: number,string,undefined,boolean,null
     // typeof 121       //number
     // typeof '1212'    //string
     // typeof undefined //undefined
     // typeof true      //boolean
     // typeof null      //object
     // typeof console.log  //function
2. 引用数据类型: Object(Array/Date/RegExp/Function)

2.值类型和引用类型的区别
(1)值类型:
    1、占用空间固定,保存在栈中(当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁了。因此,所有在方法中定义的变量都是放在栈内存中的;栈中存储的是基础变量以及一些对象的引用变量,基础变量的值是存储在栈中,而引用变量存储在栈中的是指向堆中的数组或者对象的地址,这就是为何修改引用类型总会影响到其他指向这个地址的引用变量。)
    2、保存与复制的是值本身
    3、使用typeof检测数据的类型
    4、基本类型数据是值类型
(2)引用类型:
    1、占用空间不固定,保存在堆中(当我们在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用(方法的参数传递时很常见),则这个对象依然不会被销毁,只有当一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会在核实的时候回收它。)
    2、保存与复制的是指向对象的一个指针
    3、使用instanceof检测数据类型
    4、使用new()方法构造出的对象是引用型

二、变量计算-强制类型转换

1. 字符串拼接
var a = 100 + 10     //110
var a = 100 + '10'   //10010

2. ==运算符
100 == '100'          //true
0 == ' '                   //true
null == undefined  //true

3. if语句
var a = true
if(a){
//……
};
var b = 100
if(b){
//……
};
var c = ''
if(c){
//……
};

4. 逻辑运算
console(10 && 0)    //0
console( '' || 10) //10
console( )

内置函数

一,常规函数
alert函数:显示一个警告对话框,包括一个OK按钮。
语法:alert("hello world");

confirm函数:显示一个确认对话框,包括OK、Cancel按钮。
语法:confirm("确定要删除XXX吗?"); 

prompt函数:显示一个带有文本框的对话框,提示等待用户输入。
语法:prompt("请输入您的用户名","此处显示文本框的默认值");
 

二,字符串函数
连接符'+':将两个字符串连接起来
语法:var str='a'+'b';//结果:str的值为 ab

substring函数:
语法1:从第 x 位字符开始截取
var str="Hello world!";
console.log(str.substring(7)); //从第 7 位以后开始截取到结尾  结果:orld!

语法2:截取从第 x 位到第 y 位的字符(从字符串中提取一些字符)
var str = "Hello world!";
console.log(str.substring(3,7)) //从第 3 位以后开始截取到第 7 位之间 结果:lo w

slice函数:
1.语法:若只有一个参数,截取 x 开始到结尾的所有字符
var str='Hello world!';
console.log(str.slice(-2)) //倒数第 2 位开始到结尾截取的所有的  结果:d!
2.语法:若两个参数,截取从 x 到 y 之间的字符
var str='Hello world!';
console.log(str.slice(3,7))  //从第 3 位以后开始截取到第 7 位之间 结果:lo w
console.log(str.slice(2,-3)) //从第 2 位 到倒数第 3 位之间的距离  结果:llo wor

substr函数:
1.语法: str.substr(x,y) 从第 x 位开始截取长度为 y 的字符
var str='Hello world!';
console.log(str.substr(3,7))//从第 3 位以后开始截取长度为 7 位数的值  结果:lo worl 
2.语法:如果不传y 默认从 x 位开始到结尾的字符串。
var str = 'Hello world!';
console.log(str.substr(7)) //从第 7 位以后开始截取到结尾  结果:orld!
3.语法:传负数,是从字符串后面向前几位数开始截取,只传一个负数默认是从倒数的位置截取到结尾。
var str = 'Hello world!';
console.log(str.substr(-2)) //倒数第 2 位开始截取到结尾  结果:d!
4.语法:如果传的是两位数,第一位是倒数开始,第二位是倒数的位置向后截取几位。
var str = 'Hello world!';
console.log(str.substr(-5,2)) //倒数第 5 位以后开始截取向后截取 2 位 结果:or

match函数
语法:match(Regexp)
// Regexp 是匹配规则,全局匹配;
//返回结果是存放在数组中的匹配到的结果;
//如果没有找到匹配结果,返回null;
var str="The rain in SPAIN stays mainly in the plain"; 
 console.log(str.match(/ain/g)) //["ain", "ain", "ain"]
console.log(str.match('1'))    //null

search函数
语法:search(Regexp)
//Regexp 该参数可以是需要在 stringObject 中检索的子串,也可以是需要检索的 RegExp对象,返回值是下标,下标从0开始,没有找到则返回-1,查找跟indexOf一样,找到返回下标,没有找到返回-1,但是indexOf不支持RegExp对象查找。
var str = 'hello world'
console.log(str.search('1'))  //返回 -1
console.log(str.search('llo')) //返回 2  返回找到的下标
console.log(str.search(/world/i)) //返回6 


toLowerCase函数:
语法: 将大写英文转换为小写
var str = "Hello world!";
console.log(str.toLowerCase())  //转化成全部小写 结果:hello world!

toUpperCase函数:
语法:将小写英文转换为大写
vvar str = "Hello world!";
console.log(str.toUpperCase())  //转化成全部大写 结果:HELLO WORLD!
 
检索字符串: 
 var str = 'Hello world'
1.语法: 如果传一个参数,是要检索的字符,若检索不到会返回-1,检索到的话返回在该串中的起始位置 
console.log(str.indexOf('ddd')) // -1
console.log(str.indexOf('llo')) // 2
2.语法:如果传两个参数,第一个参数是要检索的字符,第二个参数是从哪个下标开始检索,检索到的话返回在该串中的起始位置 
var str = 'Hello world Hellow world'
console.log(str.indexOf('Hellow', 1)) // 12


查找替换字符串: 
语法:两个参数,第一个参数是匹配的规则,或者说是要匹配的字符,第二个参数是要用来替换的的字符
var str = "Hello world!"; 
console.log(str.replace("world","china")); //结果: "Hello china!"

特殊字符:
\b : 后退符 \t : 水平制表符 
\n : 换行符 \v : 垂直制表符 
\f : 分页符 \r : 回车符 

三,字符串转码
将字符转换成Unicode编码 
var str = "hello"; 
语法:字符串中第一个字符的下标是 0。如果 index 是负数,或大于等于字符串的长度,则 charCodeAt() 返回 NaN。
console.log(str.charCodeAt(0))   // 72
console.log(str.charCodeAt(-1))  // NaN
console.log(str.charCodeAt(5))  // NaN

语法:fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。
console.log(String.fromCharCode(72,69,76,76,79))  // HELLO

将字符串转换成URL编码 
var str = "hello all"; 
var code = encodeURI(str); //结果: "hello%20all" 
var str = decodeURI(code); //结果: "hello all" 

相应的还有: 
encodeURIComponent() decodeURIComponent()

将字符串转换成base64编码 
base64Encode() base64Decode() 用法同上

语法:charAt()
var str = 'hello world'
//参数传入下标,返回对应的在该下标的值
console.log(str.charAt('1'))  //返回 e

四、数组对象和方法
1.concat(arr,arr2,arr3….)
concat()  //连接多个数组
实例:
var arr = [1,2];
var arr1 = [3,4];
var arr2 = [5,6];
console.log(arr.concat(arr1))       // [1, 2, 3, 4]
console.log(arr1.concat('a','b'))   // [3, 4, "a", "b"]

2.join(‘,’)或者join('')
join() //将数组中所有的元素按照某种形式分割,然后把所有元素放入一个字符串中
实例:
    var arr = ['a','b','c']
    arr.join('|') // 'a|b|c'
    arr.join('') // 'abc'

3.pop() 会改变原数组
pop() //删除数组最后一个元素并返回最后一个元素
实例:
    var arr = ['toUpperCase','concat','join']
    arr.pop() // 'join'
    arr //['toUpperCase','concat]

4.push(‘newEle1’,’newEle2’,…) 会改变原数组
push() //给数组最后添加元素,并返回数组添加元素后的长度
实例:
    var arr = ['toUpperCase','concat','join']
    arr.push('pop','push') //5
    arr //['toUpperCase','concat','join','pop','push']

5.reverse() 会改变原数组
reverse() //颠倒数组
实例:
    var arr = ['toUpperCase','concat','join']
    arr.reverse() // ['join','concat','toUpperCase']
    arr // ['join','concat','toUpperCase']

6.shift() 会改变原数组
shift() //删除数组的第一个元素,并返回数组被删除的元素
实例:
    var arr = ['toUpperCase','concat','join']
    arr.shift() // 'toUpperCase'
    arr //['concat','join']

7.unshift(‘newEle1’,’newEle2’…) 会改变原数组
unShift() //像数组最前面添加元素,并返回新的数组长度
实例:
    var arr = ['toUpperCase','concat','shift','push']
    arr.unshift('pop','unshift') //6
    arr //['pop','unshift','toUpperCase','concat','shift','push']

8.slice(‘start’,’end’)
注释:slice和splice是不同的,slice不会修改原数组,splice是在原数组上进行修改
slice('start','end') //start从何处开始截取,end到何处结束。start为-1时从最后一个开始截取。截取范围不包含start,包含end。根据长度算
实例:
    var arr = ['toUpperCase','concat','join','pop','push','shift','unshift']
    arr.slice(1) //['concat','join','pop','push','shift','unshift']
    arr.slice(1,3) //['concat','join']
    arr.slice(-1) //['unshift']
    arr.slice(-5,-1) //['join','pop','push','shift']
    arr //原数组

9.splice(index,howmany,’item1’,’item2’…) 会改变原数组
语法:splice(index,howmany,'item1','item2'...) //index,howmany必填
注释:
//index:  索引,从第几个下标开始
//howmany:  删除多少个
//item: 如果传值,那么就是在添加 item item2 item3
实例:
    var arr = ['toUpperCase','pop','push','shift','unshift']
    arr.splice(1,0,'concat','join')
    arr //['toUpperCase','concat','join','pop','push','shift','unshift']

    arr.splice(1,1)
    arr //['toUpperCase','push','shift','unshift']

    arr.splice(1,2,'concat','join')
    arr //['toUpperCase','concat','join','shift','unshift']

10.toString() 和toLocaleString()
toString() //将数组转换成字符串
toLocaleString() //将数组转换成本地字符串
注释:该方法在转换数组没什么区别,但是在转换new Date()的时候就有区别
实例:
    var arr = ['splice','slice']
    var number = 123

    arr.toString() //splice,slice
    arr.toString() //'123'

var str = new Date()
console.log(str)  // Thu Mar 14 2019 23:54:41 GMT+0800 (中国标准时间)
console.log(str.toLocaleString()) // 2019/3/14 下午11:55:13
console.log(str.toString()) // Thu Mar 14 2019 23:55:13 GMT+0800 (中国标准时间)

--------------------- 
上一篇 下一篇

猜你喜欢

热点阅读