前言:

在平常的数据解析中,数组,字符串,对象是必不可少的三种类型,今天就字符串的一些常用方法做一个整理,每个方法对应都会相应的示例,不仅是为了能够让大家一目了然,节约时间,更是为了以后自己以后也方便查阅! (在下面的方法中,有解析错误的地方,还望大家提出意见或建议,感谢!)

0、从原始字符串到模版字面量

模版字面量:

`hello world` `hello! world!` `hello ${who}` escape `<a>${who}</a>`
复制代码

(1.)我们原来使用的字符串:

字符串不区分单引号' '和双引号" "所有的字符串拼接都会识别,如果你的字符串比较长,可分行使用“+”来拼接。

例如:

    let longString = "This is a very long string which needs " +"to wrap across multiple lines because " +"otherwise my code is unreadable.";console.log(longString);//  "This is a very long string which needs to wrap across multiple lines because otherwise my code is unreadable."
复制代码

或者也可以使用 "\" 来告诉浏览器,你需要继续写这个字符串,但需要保证 "\"后面是没有任何符号或者是空格的;

例如:
let longString = "This is a very long string which needs \
to wrap across multiple lines because \
otherwise my code is unreadable.";console.log(longString)// "This is a very long string which needs to wrap across multiple lines because otherwise my code is unreadable."
复制代码

以前,我们用单引号或双引号表示字符串。

let a = '123';  //单引号
复制代码
let b = "123"; //双引号
复制代码

(2.)我们现在使用的模板字面量:

现在,使用模板字面量反撇号` `。在实际开发中,这是经常都要用到的方法。

let c = `123` //反撇号
复制代码

在字符串中使用反撇号,只需要加上转义符 ,这时中间的 `,没有什么意义:

let d = `12\`3` //字符串内插入反撇号的方式。  //   "12`3"
复制代码

在多行字符串的使用价值:

在没有模板字面量的时候,我们要实现多行字符串,必须用到换行符:

let a = '123\n456';
console.log(a);
// 123
// 456
复制代码

使用模板字面量,就可以非常简单的实现需求。

let a = `123
456`;console.log(a)       //      123//      456
复制代码

在模板字面量插入变量的方法

在原来的我们要在字符串中拼接变量,需要用‘+变量+’或者 + 来实现,而现在 而是使用${params}直接插入你需要添加到字符串的位置。这种方式也叫作字符串占位符。占位符支持互相嵌套模板字面量,强大吧。有了它,我们终于可以抛弃 + 拼接字符串的恶心做法了。

字符串和变量拼接:

var str=`xiaoming`;
console.log(`wo shi ${str}`)   // wo shi xiaoming
复制代码

变量和变量拼接:

var str0=`wo shi `;
var str=`xiaoming`;
console.log(str0+`${str}`)      // wo shi xiaoming
复制代码

1、charAt() 根据下标查询访问字符串的某个字符

在1个字符串中,我们知道某个字符的索引值,那么就可以通过索引值来获取当前字符

例如:
var str1=`age`;
console.log(str1.charAt(2))  //  e// 还可以使用  [ ] 的形式来访问,中括号填写的是字符串的下标var str1=`age`;
console.log(str1[2])       //  e复制代码

2、字符串的比较">" , "<"  ,"==="  ,">=" ,"<=" ,"!=="

(1).字母字符串比较,会先转成ascii码,再进行比较var str1=`aa`;
var str2=`bb`;
console.log(str1<str2)  //  true(2).数字字符串比较(会比较两个数字的大小)var str1=`10`;
var str2=`15`;
var str3=`10`;
console.log(str1<str2,str1===str3)  //  true,true复制代码

3、字符串的长度 length

在我们之前只使用过数组的length来判断,更改,清空数组等,这次我们来看一下字符串的length。 例如:

var str="我爱你中国";console.log(str.length)   // 5
复制代码

stringlength 是只读属性,下面我们做一下验证:

var str=`This is an apple`;console.log(str.length)   //  16str.length=5;console.log(str.length)  //  16
复制代码

4、charCodeAt(index) 返回表示给定索引的字符的Unicode的值。

方法返回0到65535之间的 UTF-16 编码单元匹配 Unicode 编码单元整数,当charCodeAt()括号中没有值时,默认为查询字符串首位的位置;当有参数时,查询的是字符串的索引值, index的值为一个大于等于 0,小于字符串长度的整数。

例:

var  str="abc";
console.log(str.charCodeAt())        //  97var  str="abc";
console.log(str.charCodeAt(0))       //  97
复制代码

结果都是一样的,查询到"a"在编码中的位置为97

var  str="abc";
console.log(str.charCodeAt(1))      //  98
复制代码

字母"b"在编码中的位置为98

5、str.concat(str1,str2....)字符串拼接

在字符串拼接中,最常用的还是“+”;

var str = "d";
var str1 = "e";
var str2 = "f";
var str3 = str+str1+str2;
console.log(str3)              //  "def"
复制代码

当然我们也可以使用concat(....)

var str1 = "a";
var str2 = "b";
var str3 = "c";
console.log(str1.concat(str2,str3))  // "abc"
复制代码

更高级的方法就是使用我们ES6的模版字面量来操作:

var str=`xiaoming`;
console.log(`wo shi ${str}`)   // wo shi xiaoming
复制代码

6、includes(str)检测一个字符串是否在另一个字符串里包含,区分大小写

例: 我们测试def 是否在字符串str

var str="abcdef";
console.log(str.includes("def"));     //  true
复制代码

而我们把“def”换成大写的“DEF”时,并不能检测到

var str="abcdef";
console.log(str.includes("DEF"));     //  false
复制代码

7、endsWith(str) 检测字符串是不是以“str”结尾的

str.endsWith(searchString [, position]);
复制代码
searchString 要搜索的子字符串。
复制代码
position 在 str 中搜索 searchString 的结束位置
复制代码

position 当不填写值时,默认值为str.length,也就是真正的字符串结尾处,从下标为0的字符开始,空格和符号也算字符。 也是开始的位置。

例:

1、当没有第二个参数时。默认第二个参数为字符串的length

var str = "To be, or not to be, that is the question.";
console.log(str.endsWith("question."))    // true
复制代码

2、 当有第二个参数的时候,从第二个参数开始,而不是从“0”

var str = "To be, or not to be, that is the question.";
console.log(str.endsWith("T",1))         // true;
复制代码

3、第二个参数的计算是包含空格和标点符号的

var str = "To be, or not to be, that is the question.";
console.log(str.endsWith("To be", 5))    // true
复制代码

8、str.indexOf()方法返回str查找的结果,如果是有返回指定索引(查找到结果的第一个字符的位置),如果没有返回“-1”,区别大小写

例:

"ABC".indexOf("A")    // 0   查询到“A”,返回位置为索引“0”"ABC".indexOf("e")    // -1  并没有查询到“e”,返回-1"ABC".indexOf("AB")   // 0   如果查询连续字符,返回连续字符的首位位置
复制代码

检测是否存在某字符串:

当检测某个字符串是否存在于另一个字符串中时,可使用下面的方法:

"Blue Whale".indexOf("Blue") !== -1; // true
"Blue Whale".indexOf("Bloe") !== -1; // false
复制代码

使用 indexOf 统计一个字符串中某个字母出现的次数 在下例中,设置了 count 来记录字母 e 在字符串 str 中出现的次数:

var str = 'To be, or not to be, that is the question.';
var count = 0;
var pos = str.indexOf('e');while (pos !== -1) {count++;pos = str.indexOf('e', pos + 1);
//重新给pos赋值,从上个查询到str的位置+1的位置继续查找,如果能查到就会再进循环,count+1}console.log(count);   // 4
复制代码

9、lastIndexOf()方法返回指定值在调用该方法的字符串中最后出现的位置,如果没找到则返回-1

str.lastIndexOf(searchValue[, fromIndex])
复制代码

参数:

searchValue  一个字符串,表示被查找的值。
复制代码
fromIndex  开始查找的下标位置。可以是任意整数。默认值为 str.length。如果为负值,则被看作 0。如果 fromIndex > str.length,则 fromIndex 被看作 str.length。
复制代码

例: 当只有一个参数的时候,第二个值默认str.length,也就是查询整个字符串,查找到这个str在整个字符串中最后出现的位置

"AVBDHIUOKL".lastIndexOf("O");     //7"AFGHJKLL:JJHKAJALKA".lastIndexOf("A");   //18
复制代码

当有第二个参数时,第二个参数会被看成查询这个字符串的结束位置

//从0到第10个索引值时,只在0的位置查询到"A",所以返回0"AFGHJKLL:JJHKAJALKA".lastIndexOf("A",10);  // 0//从0到第15个索引值时,在第15的位置查询到"A",所以返回15"AFGHJKLL:JJHKAJALKA".lastIndexOf("A",15);  // 15
复制代码

10、str.repeat(count)构造并返回一个新字符串,该字符串是循环完成后的新字符串

repeat(count)的值一般为数字,就好比"a".repeat(5)=="a"*5=="aaaaa", 但也会出现其他情况,例如以下:

1.当值为“-1”时,会报错,所以值不能为负数。

"abc".repeat(-1)
// RangeError: repeat count must be positive and less than inifinity
复制代码

2.那我们值为“0”时,会有什么情况呢?将不会循环,返回一个空字符串。

"abc".repeat(0)   // ""
复制代码

3.那么我们接下来输入一个正常的数字“1”,repeat给我们返回了"abc"*1的结果,它将循环一遍。

"abc".repeat(1)   // "abc"
复制代码

4.那么我们试试“2”,看看会不会返回循环两次,确实它返回了字符串循环两遍的结果。

"abc".repeat(2)  // "abcabc"
复制代码

5.那我们来试试小数,看看是循环几次呢,结果是它将小数点后面的抹去了,只循环了前面的数字。

"abc".repeat(3.5)  // "abcabcabc" 参数count将会被自动转换成整数.
复制代码

6.那我们试试“1/0 ”,并没有解析出来,因为1/0==inifinity

"abc".repeat(1/0)
// RangeError: repeat count must be positive and less than inifinity
复制代码

7.那我们再来试试字符串呢?结果它将字符串自动转为了number,并正确循环并返回了。

"abcd".repeat("2")   // "abcabc"
复制代码

8.看看它是否能解析中文汉字呢? 结果是并没有,也没有报错。

"abcd".repeat("二")   // ""
复制代码

11、str.slice(beginSlice,endSlice)截取字符串,第一个参数为开始位置,第二个参数为结束位置,前包后不包

1.slice()从一个字符串中提取字符串并返回新字符串。在一个字符串中的改变不会影响另一个字符串。也就是说,slice不修改原字符串,只会返回一个包含了原字符串中部分字符的新字符串。

var str = "avxdsdfasd";
var str2 = str.slice(1, 4); console.log(str,str2)  //  "avxdsdfasd","vxd"
复制代码

2.注意:slice() 提取的新字符串包括beginSlice但不包括 endSlice

var str = "aexdsdfasd";
var str2 = str.slice(0,2); console.log(str2)  //"ae"
复制代码

3.提取新字符串从第二个字符到第四个 (字符索引值为 1, 2, 和 3)。

"avxdsdfasd".slice(1, 4)       //"vxd"
复制代码

4. 提取第三个字符到倒数第二个字符。-1为倒数第一个。

"abckdesdf".slice(2, -1)       //"ckdesd"
复制代码

5.当开始的值和结束的值都为负数时,结果会从后向前数,从-3到-1之间的值(前包后不包)

"abckdesef".slice(-3, -1)       //"se"
复制代码

12、str.split()方法,使用指定的分隔符字符串将一个string对象分割成字符串数组

1.当括号中为空值时,直接将它转为字符串数组

console.log("abcdefg".split());    //  ["abcdefg"]
复制代码

2.当括号中为空引号时,它将每个字符串都分割了出来

console.log("abcdefg".split(""));    // ["a", "b", "c", "d", "e", "f", "g"]
复制代码

当在空引号中加上一个空格时,它会以你原字符串的空格来分割

"Webkit Moz O ms Khtml".split( "" )  //   ["Webkit", "Moz", "O", "ms", "Khtml"]
复制代码

3.当括号中为字符串中的字母,它将以当前字母分割字符串

console.log("abcdefg".split("a"));    // ["", "bcdefg"]console.log("abcdefg".split("b"));    // ["a", "cdefg"]
复制代码

4.当括号中字符串并不是当前字符串中包含的,它只接转成数组字符串,不做其他操作

console.log("abcdefg".split("bbbb"));   // ["abcdefg"]
复制代码

13、startsWith()检测字符串是不是以“str”开头的,根据判断返回true,false(ES6新添,与endsWith相反)

str.startsWith(searchString [, position]);
复制代码

参数:

searchString  要搜索的子字符串。
复制代码
position  在`str`中搜索`searchString`的开始位置,默认值为 0,也就是真正的字符串开头处。
复制代码
var str = "To be, or not to be, that is the question.";console.log(str.startsWith("To be"))            // trueconsole.log(str.startsWith(" be"))              //falseconsole.log(str.startsWith("not to be", 10))    // true
复制代码

14、str.substr()方法返回一个字符串中从指定位置开始到指定字符数的字符。

str.substr(start[, length])
复制代码
start:开始截取的位置,开始索引为0,最大为str.length-1,也可为负数;
复制代码
length:要截取的长度,如果不填写,默认为str.length-1;最小为1,最大为str.length-1.负数无效,如果为0或者负值,返回一个空字符串。
复制代码
var str = "abcdefghij";
复制代码

1.当两个值都为正值,且都在范围之内:

console.log("(1,2): "    + str.substr(1,2));   // (1,2): bc
复制代码

2.当截取位置为负数时,会从后向前数,倒数第一个索引为-1,截取的长度会从当前位置向后数

console.log("(-3,2): "   + str.substr(-3,2));  // (-3,2): hi
复制代码

3.当只有开始位置的值,并且为负值时,会从当前位置,截取到字符串的末尾

console.log("(-3): "     + str.substr(-3));    // (-3): hij
复制代码

4.当只有开始的位置,为正值,第二个值默认是str.length-1,也就是截取到字符串的末尾

console.log("(1): "      + str.substr(1));     // (1): bcdefghij
复制代码

5.当开始的索引是超过字符串长度的负数时,就相当于字符串一直是从后向前数的

console.log("(-20, 2): " + str.substr(-20,2)); // (-20, 2): ab
复制代码

6.当开始的索引是超过字符串的长度的正值时,无法截取到内容,返回空字符串

console.log("(20, 2): "  + str.substr(20,2));  // (20, 2):""
复制代码

15、str.substring()截取开始位置和结束位置之间的字符串,前包后不包

str.substring(start,stop)start:开始截取的位置,不为负数;stop:结束的截取位置,不为负数;
复制代码

当参数为负数时,不识别,默认转为0;当第二个值为负数时,默认转为0,,并调换开始和结束的两个值的位置,

var str= "abcdefghij";
复制代码

1.当开始和结束都为正值,并都在范围内,从索引为1的位置截取到索引为2的位置;

console.log("(1,2): "    + str.substring(1,2));         // (1,2): b
复制代码

2.当只有一个开始位置的值时,会从开始位置直接截取到结束位置;

console.log("(1): "    + str.substring(1));              // (1): bcdefghij
复制代码

3.当开始位置为负数时,会直接转为0来截取;

console.log("(-1): "    + str.substring(-1));            // (-1): abcdefghij
复制代码

4.当结束位置超过字符串的长度,会默认忽略第二个参数;

console.log("(1,20): "    + str.substring(1,20));        // ((-1): bcdefghij
复制代码

5.当结束位置为负数,会直接转为0,并交换开始和结束的位置;

console.log("(1,-5): "    + "sdsdfsdf".substring(1,-5));// ((1,-5): s
复制代码

6.当开始位置和结束位置的值为同一值时,返回空字符串

console.log("(1,1): "    + "sdsdfsdf".substring(1,1)) ;  // ((1,1): ""
复制代码

16、str.toLowerCase()将字符串转为小写的形式(并不会影响字符串本身的值)

console.log("ABC".toLowerCase());    // "abc"
复制代码

17、str.UpperCase()将字符串转为大写的形式(并不会影响字符串本身的值)

console.log( "alphabet".toUpperCase() ); // "ALPHABET"
复制代码

18、str.toString()方法用于将现有的对象转为字符串;

1.数组转字符串;

console.log( [1,2,3,4,5].toString());   //"1,2,3,4,5"
复制代码

2.对象转字符串,将会返回[object Object],故不支持转换

var a={a:1,b:2};
console.log( a.toString());         // [object Object]
复制代码

19、str.trim()方法会从一个字符串的两端删除空白字符,在这个上下文中的空白字符是所有的空白字符(space(空格键),tab,no-break``space等)以及所有行终止字符(如LFCR)。

trim()方法并不会影响原字符串,会返回一个新字符串。
复制代码

例: 1.当字符串两侧都有空格时,会全部删除

var orig = '   foo  ';
console.log(orig.trim()); // 'foo'
复制代码

2.当字符串单侧有空格,则就从单侧删除

var orig = 'foo    ';
console.log(orig.trim()); // 'foo'
复制代码

20、String.fromCharCode(num1,num2,、、numN)用于返回当前Unicode数字所对应的字符

String.fromCharCode(num1, ..., numN)
复制代码

参数

num1, ..., numN  一组序列数字,表示 Unicode 值。
复制代码

该方法返回一个字符串,而不是一个 String 对象。 由于 fromCharCodeString的静态方法,所以应该像这样使用:String.fromCharCode(),而不是作为你创建的 String 对象的方法。

例:

console.log(String.fromCharCode(65,66,67));  //"ABC"
复制代码

学习笔记——字符串方法整理相关推荐

  1. Altium Designer入门学习笔记和快捷键整理

    Altium Designer入门学习笔记和快捷键整理 一.常用快捷键整理: 以下均为英文输入法: Ctrl + 要设的功能 = 生成快捷键 点击S,切换选择,如区域内选择等 原理图界面:框选后,PC ...

  2. es6学习笔记-字符串的扩展_v1.0_byKL

    es6学习笔记-字符串的扩展_v1.0 字符的Unicode表示法 JavaScript 允许使用uxxxx的形式表示一个字符,但在 ES6 之前,单个码点仅支持u0000到uFFFF,超出该范围的必 ...

  3. 大数据 -- kafka学习笔记:知识点整理(部分转载)

    一 为什么需要消息系统 1.解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多 ...

  4. 嵌入式linux学习笔记--TCP通讯整理

    嵌入式linux学习笔记–TCP通讯整理 之前的项目中使用到了比较多的tcp 通讯相关的知识,一直也没有进行整理,今天准备拿出时间好好的整理一下TCP通讯的整个过程.预计会整理linux和window ...

  5. Android学习笔记-recreate()方法导致fragment重复新建的问题,解决方法

    Android学习笔记-recreate()方法导致fragment重复新建的问题,解决方法 今天修改一个比较奇怪的bug: 在操作一个事件的时候,使用eventbus来监听事件,断点发现有时候是会执 ...

  6. Python学习笔记-- 字符串和数字的连接

    Python学习笔记– 字符串和数字的连接 >>> s = 'abc' >>> print s + 1Traceback (most recent call las ...

  7. lua基础学习笔记-字符串

    lua基础学习笔记-字符串 字符串 Lua 语言中字符串可以使用以下三种方式来表示: 单引号间的一串字符. 双引号间的一串字符. [[ 与 ]] 间的一串字符. 例: string1 = " ...

  8. 《软件测试》学习笔记(自整理)

    <软件测试>学习笔记(自整理) A crash is when your competitor's program dies. When your program dies, it is ...

  9. Linux 学习笔记(自己整理仅供自己复习)

    前言 LINUX操作系统是一种免费使用和自由传播的类UNIX操作系统.其内核由林纳斯·托瓦兹于1991年10月5日首次发布,是一个基于POSIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运 ...

  10. 秋枫学习笔记-原创文章整理

    点击蓝字关注,提升学习效率 先祝大家圣诞快乐,感谢大家一直以来的支持,这里对原创文章进行整理,方便大家挑选感兴趣的内容阅读. 公众号:秋枫学习笔记 知乎:夏未眠,https://www.zhihu.c ...

最新文章

  1. 机器学习为NASA贡献了什么?
  2. cocoapods管理第三方框架
  3. GetMemeory(char *p);GetMemeory(char **p);char* GetMemeory()用法!
  4. 软件测试之黑盒测试-边界值分析法(理论白话学习/期中期末备考)
  5. 还没做2022年计划?这个超赞工具送给你
  6. ajax应用培训ppt,《ajax培训课件.ppt
  7. 绝地求生信号服务器崩溃,绝地求生奔溃怎么办 吃鸡游戏崩溃解决方法
  8. python安装pandas pytz_python安装pandas+pytz
  9. Bridging legacy APIs 桥接遗留API
  10. 台式计算机检测不到无线网卡,台式机检测不到无线网卡怎么办
  11. qt感叹号_QT使用教程(四)之初体验
  12. deleteRow() 连续删除多行
  13. Python-温度转换
  14. java电影院购票系统概况_电影院售票管理系统
  15. 如何用齿轮法测定光速
  16. 解决IDEA中Tomcat服务器端口号被占问题
  17. ddr4 dqs 频率_DDR4各种技术参数详解
  18. android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!
  19. ECharts基础柱状图
  20. 解决:Unknown custom element: <> - did you register the component correctly? For recursive compon

热门文章

  1. 软件蓝图设计_智能企业的设计蓝图
  2. python dataframe取行列_pandas DataFrame 行列索引及值的获取的方法
  3. 编程求一个四位自然数ABCD,它乘以A后变成DCBA
  4. android音频杂音问题_如何消除音频中的噪声?用这个简单好用的音频剪辑软件就够了...
  5. android 如何启动nfc卡模拟模式_用手机模拟小区业主卡,出入更加便捷,免去带卡的烦恼,(限安卓)...
  6. 频率单位Hz、MHz、GHz、THz、PHz、EHz换算关系
  7. JS基础知识 --变量类型和计算
  8. 如何从一个USB上安装Windows Vista
  9. 分享磨砺营威哥讲解-Android开发过程中内存优化的几点总结
  10. 神秘的 shadow-dom 浅析