当前位置:网站首页>Js字符串-String字符串对象方法
Js字符串-String字符串对象方法
2020-11-06 22:11:00 【进击的前端】
Ⅰ- 壹 -String字符串类型
一 String的创建方式
- 字面量创建方式,存在栈中
- 实例化创建方式,(new)存在栈中
- 构造函数创建方式,会创建一个字符型对象,存在堆中
- 字符串的length 获取字符串的长度。只是可读的 不能修改 只能获取
- str.charAt(1) 等同于 str[1]
// 字面量创建方式
var str="abc",str1='abd',str2=`abc`;
//实例化创建方式
var str4=String('abc');//存在栈中
//构造函数创建方式
var str5=new String('abc');//字符型对象,存在堆中
console.log(str4===str5);//false
console.log(str4==str5);//true
二 基本包装类型
为了方便操作基本数据类型, JavaScript还提供了三个特殊的引用类型: String、Number和Boolean。
基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。
- 对象才有属性和方法 复杂数据类型才有属性和方法
- 简单数据类型为什么会有lenght 属性呢?
- 基本包装类型: 就是把简单数据类型包装成为了复杂数据类型
// 基本包装类型
varstr='andy';
console. log(str .length);
//对象才有属性和方法 复杂数据类型才有属性和方法
//简单数据类型为什么会有lenght 属性呢?
//基本包装类型: 就是把简单数据类型包装成为了复杂数据类型
// (1) 把简单数据类型包装为复杂数据类型
var temp=new String('andy' );
// (2) 把临时变量的值给str
str = temp;
// (3) 销毁这个临时变量
temp=nul1:
三 String字符串的不可变
指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一一个内存空间。
- 当重新给str赋值的时候,常量’abc’不会被修改,依然在内存中
- 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
- 由于字符串的不可变,在大量拼接字符串的时候会有效率问题;
var str = 'abc' ;
str = 'hello';
//当重新给str赋值的时候,常量'abc'不会被修改,依然在内存中
//重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
//由于字符串的不可变,在大量拼接字符串的时候会有效率问题;
var str= ‘’;
for(vari=0;i<100000;i++){
str += i;
}
console.log(str); //这个结果需要花费大量时间来显示,因为需要不断的开辟新的空间
Ⅱ - 贰 -String字符串对象方法
length获取字符串的长度
let myString = "hello kitty";
myString.length; // 输出11
一 根据字符返回位置
字符串所有的方法,都不会修改字符串本身(字符串是不可变的) ,操作完成会返回一个新的字符串。
方法名 | 说明 |
---|---|
indexOf(要查找的字符,开始的位置) | 返回指定内容在元字符串中的位置, 如果找不到就返回-1, 开始的位置是index索引号 |
lastindexOf() | 从后往前找,只找第一个匹配 |
1 indexOf
作用: 通过字符, 查找到对应的索引返回
语法:
字符串.indexOf(你要查找的字符)
字符串.indexOf(你要查找的字符, 从哪个索引开始查找)
返回值: 一个数字
如果有这个字符, 那么就返回找到的第一个字符位置的索引
如果没有这个字符, 那么就返回 -1
let myString = "hello kitty";
myString.indexOf('kitty'); // 6
myString.indexOf('Hello'); //-1
myString.indexOf('hello'); //0
myString.indexOf('hello',3); //-1
//
var str = 'hello world';
// 当你找一个多个字母的字符的时候, 会找到匹配的第一个字母的位置返回
var res = str.indexOf('world');
console.log(res);//结果为 6
2 lastIndexOf()
作用: 通过字符, 查找到对应的索引返回, 从后往前查找
语法:
字符串.lastIndexOf(你要查找的字符)
字符串.lastIndexOf(你要查找的字符, 从哪个索引开始查找)
返回值: 一个数字
如果有这个字符, 那么就返回找到的第一个字符位置的索引
如果没有这个字符, 那么就返回 -1
let myString = "hello kitty";\
myString.lastIndexOf('hello') // 0
myString.lastIndexOf('world') // -1
myString.lastIndexOf('kitty') // 6
myString.lastIndexOf('kitty',3) // -1
//
var str = 'hello world';
//从右往左找
var res = str.lastIndexOf('l');
console.log(res);//结果为 9
二 根据位置返回字符
方法名 | 说明 | 使用 |
---|---|---|
charAt(index) | 返回指定位置的字符(index字符串的索引号) | str.charAt(0) |
charCodeAt(index) | 获取指定位置处字符的ASCII码(index索引号) | str.charCodeAt(0) |
str[index] | 获取指定位置处字符 | HTML5.IE8.和charAt()等效 |
1 charAt()
char: 字符, 表示一个字符
at: 在哪
作用: 根据索引找到对应的字符返回
语法:字符串.charAt(索引)
返回值: 对应索引位置的字符
如果有对应索引, 那么得到的就是对应索引位置的字符
如果没有对应索引, 那么得到的是 空字符串
var str = 'hello world';
var res = str.charAt(8);
console.log(res);//结果为 r ,空格也占索引位置
2 charCodeAt()和String.fromCharCode()
charCodeAt()
作用: 根据索引找到对应的字符, 返回字符的编码
语法:字符串.charCodeAt(索引)
返回值: 对应索引位置的字符编码 UTF-8 编码
String.fromCharCode()
作用: 根据对应的字符, 返回Unicode编码对应的值
语法:String.fromCharCode(转换的Unicode码)
返回值: 对应索引位置的字符编码 UTF-8 编码
var str = '你好 世界';
// res 获取的是 你 这个汉字的编码
var res = str.charCodeAt(1);
console.log(res);//结果为 22909 是这个汉字的编码
var rek = String.fromCharCode(res); //编码转换为字符串
console.log(rek)//打印结果为 好
三 字符串操作方法(重点)
方法名 | 说明 |
---|---|
concat(str1,str2,str3…) | concat()方法用于连接两个或多个字符串。拼接字符串,等效于+, +更常用 |
substr(start,length) | 从start位置开始(索引号),length 取的个数重点记住这个 |
substring(start, end) | 从start位置开始,截取到end位置,end取不到基本和slice 相同但是不接受负值 |
replace() | 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 |
match() | 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。以数组表示 |
search() | 用于检索字符串中指定的子字符串的位置 |
toUpperCase() | 方法用于把字符串转换为大写。 |
toLowerCase() | 方法用于把字符串转换为小写。 |
slice(start, end) | 从start位置开始,截取到end位置, end取不到(他们俩都是索引号) |
split() | 切割字符串 返回切割之后的一个数组 使用于 对象 方法join()数组转换为字符 相反 |
1 concat()
作用: 拼接字符串
语法:字符串.concat(要拼接的字符串1, 要拼接的字符串2, …)
返回值:一个拼接好的字符串
作用和 加号(+) 是一模一样的
let myString = "Hello kitty";
//concat()
let str = "aabbcc"
let str2 = " ccddeeff"
myString.concat(str) // "Hello kittyaabbcc"
myString.concat(str,str2) // "Hello kittyaabbcc ccddeeff"
//
var str = 'hello world';
var res = str.concat(' 你好 世界');
console.log(res);//结果为 hello world 你好 世界
2 substring() 和substr()
参数都不支持负数
subbstring()
作用: 从字符串里面提取出一些内容
语法:字符串.substring(开始索引, 结束索引) - 包头不包尾 第二个参数不写, 默认到末尾
返回值: 一个新的字符串,从原先字符串里面提取出来的内容
var str2 = 'hello world';
// 从索引 1 开始, 到索引 7, 不包含索引 7
var res2 = str2.substring(1, 7);
console.log(res2);//结果为 ello w
substr()
作用: 从字符串里面提取出一些内容
语法:字符串.substr(开始的索引, 多少个)
第二个参数不写, 默认是按照到字符串末尾计算
返回值: 一个新的字符串,从原先字符串里面提取出来的内容
var str = 'hello world';
// 从索引 1 开始, 向后数 7 个, 提取出来
var res = str.substr(1, 7);
console.log(res);//结果为 ello wo
3 split()
作用: 按照你的需求, 切割字符串
语法:字符串.split(‘你要切割的字符’)
参数你写什么就按照什么给你切割
参数你要是写一个字符串里面没有的字符, 那么给你切割出一个整个的字符串
参数要是不写, 也是切割一个整个的字符串
参数你要是写一个 空字符串(""), 会一位一位给你切割
只能从后向前选
返回值: 是一个 数组
按照你的规则切割好每一部分, 都放到数组里面
let myString = "Hello kitty";
myString.split(""); // ["H", "e", "l", "l", "o", " ", "k", "i", "t", "t", "y"]
myString.split(" "); // ["Hello", "kitty"]
myString.split(" ")[0];//Hello 字符串 获取下标为零的数据
let str2 = "23:34:56:78";
str2.split(":",3) // ["23", "34", "56"]
let str3 = "How,are,you,doing,today?"
str3.split(",") // ["How", "are", "you", "doing", "today?"]
var str = '2020-05-20';
// 用 - 把字符串分开, 每一段都作为一个数据放在数组里面
var res = str.split('-');
console.log(res);//结果为 ["2020", "05", "20"]
4 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
let myString = "Hello kitty";
myString.replace(/kitty/,"world") // "Hello world"
let name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1"); // "John Doe"
5 match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
let myString = "hello kitty";
myString.match("hello"); //hello
myString.match("Hello"); //null
let str = "2 plus 3 equal 5"
str.match(/\d+/g) //["2", "3", "5"]
6 slice()
slice 和数组的slice等同
作用: 从字符串里面提取一部分数据
语法:
字符串.slice(开始索引, 结束索引) - 包前不包后
字符串.slice(开始索引, 负整数)
当你写负整数的时候, 表示 字符串.length + 负整数
返回值: 一个字符串,从原始字符串里面提取出来的一部分
var str = 'abcdefghijklmn';
// 提取 str 字符串中索引 1 到索引 10 的字符, 不包含索引 10
var res1 = str.slice(1, 10);
// 你写 -3 等价于 str.length + -3 === 11
var res2 = str.slice(1, -3);
var res3 = str.slice(1, 11);
console.log(res1);//结果为 bcdefghij
console.log(res2);//结果为 bcdefghijk
console.log(res3);//结果为 bcdefghijk
7 toUpperCase() 、toLowerCase()
toUpperCase() 方法用于把字符串转换为大写。
作用: 把字符串里面所有的小写字母转换成大写字母
语法:字符串.toUpperCase()
返回值: 就是转换好的字符串
var str2 = 'abcdefg';
var res2 = str2.toUpperCase();
console.log(res2);//结果为 ABCDEFG
toLowerCase() 方法用于把字符串转换为小写。
作用: 把字符串里面所有的大写字母转换成小写字母
语法:字符串.toLowerCase()
返回值: 就是转换好的字符串
var str = 'ABCDEFG';
var res = str.toLowerCase();
console.log(res);//结果为 abcdefg
四 案例
-
split方法可以将字符串转换为数组,便可以使用数组的方法
-
反之 join 也是可以转换为字符串也是可以使用 字符串的方法
1 url截取
1
function getURLPram(url){
url=url.split("?")[1];
var obj={
};
var arr=url.split("&");
for(var i=0;i<arr.length;i++){
var str=arr[i];
var arr1=str.split("=");
obj[arr1[0]]=arr1[1];
}
return obj;
}
2
function getURLPram(url){
return url.split("?")[1].split("&").reduce(function(value,item){
var arr=item.split("=");
value[arr[0]]=arr[1];
return value;
},{
})
}
var url="https://detail.tmall.com/item.htm?id=570063940353&ali_refid=a3_430406_1007:116401153:J:157145175_0_1069023083
var obj= getURLPram(url);
console.log(obj);
2 字符串翻转
var str="abcdef";
// 转换成数组,然后反转,然后再用""连接
str=str.split("").reverse().join("");
console.log(str);
版权声明
本文为[进击的前端]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4618999/blog/4706904
边栏推荐
- MRAM高速缓存的组成
- 2020-08-29:进程线程的区别,除了包含关系之外的一些区别,底层详细信息?
- Git rebase is in trouble. What to do? Waiting line
- es创建新的索引库并拷贝旧的索引库 实践亲测有效!
- What are the highlights of Huawei mate 40 series with HMS?
- A small goal in 2019 to become a blog expert of CSDN
- The isolation level of transaction and its problems
- 2020-08-18:介绍下MR过程?
- An article will take you to understand CSS3 fillet knowledge
- git远程库回退指定版本
猜你喜欢
From overseas to China, rancher wants to do research on container cloud market
Python basic variable type -- list analysis
Road to simple HTML + JS to achieve the most simple game Tetris
2020 database technology conference helps technology upgrade
An article takes you to understand CSS gradient knowledge
行为型模式之备忘录模式
CloudQuery V1.2.0 版本发布
Kubernetes and OAM to build a unified, standardized application management platform knowledge! (Internet disk link attached)
How about small and medium-sized enterprises choose shared office?
How much disk space does a new empty file take?
随机推荐
An article takes you to understand CSS3 picture border
非易失性MRAM存储器应用于各级高速缓存
2020-08-20:GO语言中的协程与Python中的协程的区别?
Detect certificate expiration script
How to prepare for the system design interview
Erd-online free online database modeling tool
An article taught you to download cool dog music using Python web crawler
迅为iMX6开发板-设备树内核-menuconfig的使用
2020 database technology conference helps technology upgrade
消防器材RFID固定资产管理系统
What is the meaning of sector sealing of filecoin mining machine since the main network of filecoin was put online
PHP application docking justswap special development kit【 JustSwap.PHP ]
image operating system windows cannot be used on this platform
Summary of front-end performance optimization that every front-end engineer should understand:
Will blockchain be the antidote to the global epidemic accelerating the transformation of Internet enterprises?
Interviewer: how about shardingsphere
Metersphere developer's Manual
谷歌浏览器实现视频播放加速功能
What the hell is fastthreadlocal? The existence of ThreadLocal!!
迅为-iMX6ULL开发板上配置AP热点