字符串方法整理

字符串方法

  • 字符串切割
    • slice
      • strObj.slice(start[,end])
      • 参数为负,将它作为length+end处理,此处length为字符串的长度。 
      • str.slice(-2)可以取字符串后两位
    • substring
      • strObj.substring(start[,end])
      •  substring方法使用start和end两者中的较小值作为子字符串的起始点
      • 如果start或end为NaN或者为负数,那么将其替换为0。 
      • 两个参数不确定是起始位置还是结束位置时使用
    • substr
      • strObj.substr(start[,length])
      • 如果start为负,将它作为length+start处理,此处length为字符串的长度。
      • 返回一个从指定位置开始的指定长度的子字符串。 
      • str.substr(-2)可以取字符串后两位
  • 字符串分割(字符串转数组)
    • split
      • strObj.split([separator[,limit]]) 
      • separator字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。 
      • limit该值用来限制返回数组中的元素个数。
      • var str = "AA BB CC DD EE FF";
      • alert(str.split(" ",3));
      • 结果:
      • AA,BB,CC
  • 子串识别 注意:如果向 startsWith() 、 endsWith() 或 includes() 方法传入了正则表达式而不是字符串,会抛出错误。而对于indexOf()和lastIndexOf()这两个方法,它们会将正则表达式转换为字符串并搜索它若需要找到它们在字符串中的确切位置,则需要使用 indexOf() 和 lastIndexOf() 。
    • includes (es6)
      • 该方法在给定文本存在于字符串中的任意位置时会返回 true ,否则返回false。
      • 接受两个参数:需要搜索的文本,以及可选的搜索起始位置索引
    • startsWith (es6)
      • 该方法在给定文本出现在字符串起始处时返回 true ,否则返回 false
      • 接受两个参数:需要搜索的文本,以及可选的搜索起始位置索引
    • endsWith (es6)
      • 该方法在给定文本出现在字符串结尾处时返回 true ,否则返回 false 
      • 接受两个参数:需要搜索的文本,以及可选的搜索起始位置索引
    • indexOf
      • strObj.indexOf(substr[,startIndex]) 
      • 返回String对象内第一次出现子字符串位置。没有找到子字符串,则返回-1。 
      • var str = "ABCDECDFG";
      • str.indexOf("CD",1); // 由1位置从左向右查找 12,23...
      • 结果:2
    • lastIndexOf
      • strObj.lastIndexOf(substr[,startindex]) 
      • 返回String对象中字符串最后出现的位置。没有找到子字符串,则返回-1。 
      • var str = "ABCDECDFG";
      • str.lastIndexOf("CD",7); // 由7位置从右向左查找 67, 56...
      • 结果:5
    • search
      • 参数为字符串或者正则表达式
      • 返回匹配的第一个字符串的位置(就算是带g全局标志也是返回匹配的第一个字符串的位置)
  • 字符串重复
    • repeat(es6)
      • 接受一个参数作为字符串的重复次数,返回一个将初始字符串重复指定次数的新字符串
      • 参数如果是小数,会被取整(向下取整,等同floor) console.log('na'.repeat(2.9)); // "nana"
      • 如果repeat的参数是负数或者Infinity,会报错 //Uncaught RangeError: Invalid count value console.log('na'.repeat(Infinity)); //Uncaught RangeError: Invalid count value console.log('na'.repeat(-1));
      • 如果参数是0到-1之间的小数,则等同于0,这是因为会先进行取整运算。0到-1之间的小数,取整以后等于-0,repeat视同为0 console.log('na'.repeat(-0.9)); // ""
      • 参数NaN等同于0 console.log('na'.repeat(NaN)); // ""
      • 如果repeat的参数是字符串,则会先转换成数字 console.log('na'.repeat('na')); // "" console.log('na'.repeat('3')); // "nanana"
      • 应用:缩进级别
  • 字符串补全
    • padStart(es8)和padEnd(es8)
      • 接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串 'x'.padStart(5, 'ab') // 'ababx' 'x'.padStart(4, 'ab') // 'abax' ​ 'x'.padEnd(5, 'ab') // 'xabab' 'x'.padEnd(4, 'ab') // 'xaba'
      • 如果省略第二个参数,默认使用空格补全长度 'x'.padStart(4) // ' x' 'x'.padEnd(4) // 'x '
      • 如果原字符串的长度,等于或大于指定的最小长度,则返回原字符串 'xxx'.padStart(2, 'ab') // 'xxx' 'xxx'.padEnd(2, 'ab') // 'xxx'
      • 如果用来补全的字符串与原字符串,两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串 'abc'.padStart(10, '0123456789')// '0123456abc'
      • 应用
        • 补全指定位数 '1'.padStart(10, '0') // "0000000001" '12'.padStart(10, '0') // "0000000012" '123456'.padStart(10, '0') // "0000123456"
        • 提示字符串格式 '12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12" '09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猿人谷

C++ primer里的template用法

template 的用法     在程序设计当中经常会出现使用同种数据结构的不同实例的情况。例如:在一个程序中     可以使用多个队列、树、图等结构来组织数据...

1915
来自专栏微信公众号:Java团长

Java内部类详解

   说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总...

911
来自专栏专注数据中心高性能网络技术研发

[Effective Modern C++(11&14)]Chapter 3: Moving to Modern C++

2056
来自专栏青枫的专栏

java基础学习_常用类小结

  Object:是类层次结构的根类,所有类都直接或者间接的继承自该类。   Scanner:获取键盘录入数据的类。   String:针对字符串的常见操...

814
来自专栏专注数据中心高性能网络技术研发

[Effective Modern C++(11&14)]Chapter 4: Smart Pointers

2392
来自专栏从流域到海域

《笨办法学Python》 第10课手记

《笨办法学Python》 第10课手记 本节课讲转义字符,并在代码中使用了\n(回车) 、\t (制表符,单个使用即输出八个空格)、\(打印一个\),也解释了前...

1778
来自专栏代码世界

Python基础数据类型之集合以及其他和深浅copy

一、基础数据类型汇总补充 list  在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错(可以从后向前循环删除,这样不会改变未删元素的索...

2919
来自专栏光变

3.1 ASM-方法-结构

ASM-方法-结构 本章将会介绍如果使用ASM core API生成或者转换Java编译后的method。 本将开始会展示编译后的method,然后使用很多说...

862
来自专栏iOS技术杂谈

iOS block探究(一): 基础详解你要知道的block都在这里

你要知道的block都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 本文大纲 blo...

3048
来自专栏mukekeheart的iOS之旅

Java基础学习(学习IT企业必读的324个JAVA面试题.pdf 整理)

一、Java程序基础 javac 文件名.java    编译程序    java 类名               运行java程序 代码规范中,一下几点要注...

2099

扫码关注云+社区