字符串方法整理

字符串方法

  • 字符串切割
    • 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 条评论
登录 后参与评论

相关文章

来自专栏落影的专栏

Swift学习笔记

这是一篇学习swift的笔记 Objective-C是很好的语言,Runtime机制、消息机制等也是爱不释手。 Swift一直在更新,闲暇时间学一遍。学习的B...

4157
来自专栏Android干货园

Kotlin初级(4)- - - 字符串和字符.md

782
来自专栏java学习

面试题22(关于static用法)

关于下面的程序Test.java说法正确的是? public class Test { static String x="1"; staticint y=1; ...

2695
来自专栏Ryan Miao

在Springmvc中获取properties属性

一些关键的属性一般都会拿出来作为配置,比如数据库连接等。在springmvc中也提供了获取property的类,比如@Value来获取。我接触spring很浅,...

3119
来自专栏Java开发者杂谈

Ruby(3):基本语法中

字符串分割成数组: 可以使用先scan再join的方法,当然其实有更好的 split方法,专门用来分割字符串 1 # 在Ruby中,如果不使用inspect...

35215
来自专栏彭湖湾的编程世界

【算法】实现栈和队列

栈(stack) 栈(stack)是一种后进先出(LIFO)的集合类型, 即后来添加的数据会先被删除 ? 可以将其类比于下面文件的取放操作:新到的文件会被先取走...

3256
来自专栏指尖下的Android

简单算法之冒泡排序

外层循环控制循环次数,内层循环控制比对元素的个数,因为冒泡排序是两两比对,五个元素的数组只需要比对四次,因为最后一个元素没有可比对的元素,内层循环判断条件j <...

792
来自专栏技术专栏

Scala入门与进阶(三)- 函数

默认参数:在函数定义时,允许指定参数的默认值 $SPARK_HOME/conf/spark-defaults.conf

873
来自专栏java一日一条

(转)Java正则表达式入门

众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此...

501
来自专栏java学习

面试题29( 在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为?)

在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为? A this.A(x) B this(x) C sup...

3305

扫码关注云+社区