当前位置: 首页 > news >正文

JavaScript--substring 和 substr 方法手记

1. substring 方法

  作用: 提取调用这个方法的字符串的指定位置的字符, 不对原字符串操作, 提取结果返回为新字符串.

  格式: string.substring(start, stop)

  参数:

    start: 表示从该字符串中的哪个下标开始提取, 提取到的字符包括原字符串中处于这个下标的字符.

    stop: 表示提取到哪个下标为止(不包括原字符串中所处这个下标的字符, 切记和 start 相反).

    当参数只有一个且为正数时, 会截取从这个下标开始(包括处于这个下标的字符)一直到原字符串的最后一个字符(从左到右).

  当参数为两个正数, 且 start < stop, 会截取处于这俩下标之间的字符, 当然包含 'start' 不包含 'stop'. 

-------------------------------------------------------------------------------------

以下的情况参数都是负数, 但提取的字符串是一样的, 可理解为该参数被当做 0 后做的处理.

  

 

-------------------------------------------------------------------------------------

 知道两个参数为负时会转为 0 , 那么当 start 和 stop 都为正, stop < start 时是什么情况呢?

有人将这种情况理解为  当 stop < start, 此方法会在提取字符之前将两个参数调换位置.

-------------------------------------------------------------------------------------

 

 2. substr 方法

  作用: 在提取调用这个方法的字符串中, 提取从某个下标开始(从左到右)限定长度的字符串, 不对原字符串操作, 返回提取到的字符串.

  格式: string.substr(start, length);

  参数: 

    start: 和 substring 中的 start 类似, 表示从哪个下标的字符开始提取(也包含处于这个下标的字符).

    length: 表示要提取的字符串的长度.

 

-------------------------------------------------------------------------------------

  当 start > 0, length 没写时, 会提取包含处于该下标的字符开始到原字符串结尾所有的字符(从左到右数).

  即: "qwerasdf".substr(1)   ==> werasdf

 

-------------------------------------------------------------------------------------

  当 start < 0, length 没写时, 该方法会将 start 转为正数, 并倒着从右向左地提取以1为最小下标的 |start| 个字符, 说的绕口, 一看便知.

  

  此时的 start 不单单表示起始位置, 还有限定长度的作用, 但参数 length 存在时, 又不一样了.

 

-------------------------------------------------------------------------------------

  "hijklmn".substr(-1, 0) ==> "" 

  "hijklmn".substr(-1, 2) ==> "n"

  "hijklmn".substr(-1, 8) ==> "n"   能看出 length 值长度超过字符串长度会被无视.

  "hijklmn".substr(0, 8) ==> "hijklmn"

  "hijklmn".substr(1, -3) ==> ""      start > 0, length < 0, 此时不会提取到字符, 会返回空字符串.

 

在此抛砖引玉, 有误导之处还请不吝指点 ^^.

 

转载于:https://www.cnblogs.com/vlovecode/p/6027409.html

相关文章:

  • 颜色选择器插件
  • JDBC中驱动加载的过程分析(下)
  • 条件控制语句
  • hibernate重要接口说明
  • 微信开发个人总结
  • Hibernate中对象的三种状态及相互转化
  • hibernate脏数据检查
  • 版本控制-Git服务器搭建和常用命令使用
  • hibernate中get与load的区别
  • 双11_2016
  • hibernate中的Session.flush()
  • hibernate的lazy机制
  • hibernate的lazy策略使用总结
  • springmvc-spring-mybatis实现最简单的登录验证
  • hibernate 的lazy策略存在的问题
  • Angular 2 DI - IoC DI - 1
  • Druid 在有赞的实践
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • httpie使用详解
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • HTTP--网络协议分层,http历史(二)
  • JavaWeb(学习笔记二)
  • Java精华积累:初学者都应该搞懂的问题
  • SQLServer插入数据
  • 爱情 北京女病人
  • 从0实现一个tiny react(三)生命周期
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • MPAndroidChart 教程:Y轴 YAxis
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​批处理文件中的errorlevel用法
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #、%和$符号在OGNL表达式中经常出现
  • #Linux(帮助手册)
  • #pragma data_seg 共享数据区(转)
  • (¥1011)-(一千零一拾一元整)输出
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (3)(3.5) 遥测无线电区域条例
  • (9)STL算法之逆转旋转
  • (pytorch进阶之路)扩散概率模型
  • (翻译)terry crowley: 写给程序员
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (顺序)容器的好伴侣 --- 容器适配器
  • (四) 虚拟摄像头vivi体验
  • (算法二)滑动窗口
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)http协议
  • (转)ObjectiveC 深浅拷贝学习
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ***详解账号泄露:全球约1亿用户已泄露
  • .Net Core与存储过程(一)
  • .Net IE10 _doPostBack 未定义