String.prototype.slice(beginIndex, endIndex)

slice 方法是用来从父字符串中截取子字符串并返回一个新的字符串,接受两个参数。

beginIndex endIndex
接收一个整数作为第一个参数,会进行Number强制转换,如果得到 NaN,或者默认不传递第一个参数,都会以 0 作为默认值。如果超出字符串的长度,截取出来是一个空字符串。 接收一个整数作为第一个参数,会进行Number强制转换,如果得到 NaN,会以 0 作为默认值。如果不传入就会以 str.length 为截取最终位置。
可以接收一个负数,如果是负数,开始截取的位置就是 str.length + beginIndex。就是会保留下 beginIndex 个字符串,从 str.length - beginIndex 开始截取。 可以接收一个负数,如果是负数,结束截取的位置就是 str.length + endIndex。

实现:

String.prototype.slice1 = function(beginIndex, endIndex) {let len = this.length, str = '';endIndex = (typeof endIndex != 'undefined') ? endIndex : len;let start = beginIndex || 0;start = (start >= 0) ? start : Math.max(0, len + start);let end = (typeof endIndex == 'number') ? Math.min(endIndex, len) : len;if (endIndex < 0) {end = len + end;}while(start < end) {str += this[start];start++;}return str;
}

String.prototype.substr(beginIndex, endIndex)

substr 返回一个字符串中从指定位置开始到指定字符串位置,截取初一个新的字符串。接受两个参数。

beginIndex

length

接收一个整数作为第一个参数,会进行Number强制转换,如果得到 NaN,或者默认不传递第一个参数,都会以 0 作为默认值。如果超出字符串的长度,截取出来是一个空字符串。 需要截取的长度。接收一个整数作为第一个参数,会进行Number强制转换,如果得到 NaN,都会以 最一个字符 0 作为默认值。
可以接收一个负数,如果是负数,开始截取的位置就是 str.length + beginIndex。就是会保留下 beginIndex 个字符串,从 str.length - beginIndex 开始截取。

实现:

String.prototype.substr1 = function(start, length) {let len = this.length, str = '';length = (typeof length != 'undefined') ? length : len;  let begin = start || 0;begin = (begin >= 0) ? begin : Math.max(0, start + len);while (length > 0) {if (!this[begin]) break;str += this[begin++];length--;}return str;
}

String.prototype.substring(start, end)

substring 方法返回一个字符串在开始索引到结束索引之间的一个子集,或从开始索引直到字符串的末尾的一个子集。

start end
接收一个整数作为第一个参数,会进行Number强制转换,如果得到 NaN,或者默认不传递第一个参数,还有负数,都会以 0 作为默认值。如果超出字符串的长度,截取出来是一个空字符串。 接收一个整数作为第一个参数,会进行Number强制转换,如果得到 NaN,会以 0 作为默认值。如果不传入就会以 str.length 为截取最终位置。
String.prototype.substring1 = function(start, end) {let len = this.length, str = '';end = (typeof end == 'undefined') ? len - 1 : end;end = (typeof end == 'number') ? Math.min(end, len) : len;let beign = start || 0;begin = +beign;if (isNaN(beign) || beign < 0) beign = 0;let result = 0;if (end < begin) {result = end;end = begin;beign = result;}let size = end - begin;  // 实际要截取的长度。if (size > 0) {if (this.charAt) {for (let i = 0; i < size; i++) {result += this.charAt(begin + i);}} else {for (let i = 0; i < size; i++) {result += this[begin + i];}}}return str;
}

JavaScript 中字符串截取 (+实现)相关推荐

  1. JavaScript中字符串连接/拼接的四种方式

    JavaScript中连接字符串的方式有4种,分别是使用加号运算符连接.使用${}配合反引号连接.使用concat()函数连接.使用join()函数连接. 1. 使用加号运算符 示例代码如下: let ...

  2. JavaScript中字符串数组赋值失败,不是每个字符串,却是字符。

    我的处女作<Canvas系列教程>在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作. 教程介绍.教程目录等能在README里查阅. 传送门:https: ...

  3. JavaScript中字符串与Unicode编码的互相转换

    JavaScript中字符串与Unicode编码的互相转换 这段代码演示了JavaScript中字符串与Unicode编码的转换: // 为了控制台的演示方便, 变量没有添加 var 定义 // 实际 ...

  4. 在html中如何截取字符串,javascript中如何截取字符串?

    JavaScript中截取字符串有三种方法,分别是substring(),substr(),split().下面本篇文章就来给大家介绍一下它们的使用方法,希望对大家有所帮助. 方法1:使用substr ...

  5. JavaScript中字符串去掉特殊字符和转义字符

    <pre name="code" class="javascript">/*** * 去掉字符串中的特殊字符 */ var excludeSpeci ...

  6. javascript中字符串的‘单‘与“双“引号

    通常在使用 javascript 进行编码时,您会遇到对字符串使用"单"或"双"引号的情况,并且想知道两者之间是否有任何真正的区别,如果有,使用一个是否有优势其 ...

  7. mysql截取字符串最后两位_mysql 中字符串截取

    MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有 mid(), substr().其中,mid(), substr() ...

  8. mysql 截取括号内字符串_Mysql中字符串截取函数

    MySQL中字符串的截取 substring_index(str,delim,count) 函数的使用较为普遍 函数括号里面的依次为:要分隔截取的字符串(如:"aaa_bbb_ccc&quo ...

  9. html字符串转成数组,图文详解JavaScript中字符串转换为数组的方法

    在前端开发中经常需要使用JavaScript,那你知道怎么将JS字符串转换为数组吗?这篇文章就和大家讲讲JS将字符串转换为数组的方法,感兴趣的朋友可以参考一下,希望可以帮助到你. 之前一篇文章已经给大 ...

最新文章

  1. android.mk 里面内容介绍
  2. csv科学计数法变为普通数字_数据科学家常遇到的10个错误
  3. EasyUI datagrid动态加载json数据
  4. oracle rac 节点启动,Oracle 10g RAC 节点自动重启故障处理
  5. 最常见的读入数据方法集锦
  6. jquery中json数据转换为字典
  7. 物联网听起来像是一个和互联网不同的网,万物互联又把网给弄丢了,正向我们扑面而来的是万物互联网。...
  8. GIT提交记录和Revert commit过程分析
  9. dnf最新地图编号2020_2020手游崛起端游没落?网易新端游好玩刺激能搬砖,网友:妙...
  10. 关于C语言goto的使用
  11. Fragstats计算景观格局指数(初学指南)
  12. 通过java调用webservice服务详细案例一
  13. kali linux下的嗅探工具介绍
  14. 炫龙银魂t1配置_高配好用不贵炫龙银魂T1让你体验到真正性价比
  15. 关于Android Studio单元测试中“Method d in android.util.Log not mocked.”问题的解决。
  16. Firefox Developer Edition下载
  17. 使用Retinanet训练自己的数据集
  18. 软件测试模型 — 测试金字塔
  19. OJ每日一练——羞涩的答复
  20. 如果不做测试了,自己还能干点啥?

热门文章

  1. spring事务管理方式
  2. 如何保护您的数据免遭未经授权的访问
  3. 计算机网络基础【2】
  4. 软件设计模式“单例模式”和“工厂模式”
  5. 1.python-web
  6. vim中删除当前行后面所有的行
  7. LTSPICE使用教程:导入第三方库模型进行仿真
  8. Android默认设置MTP模式
  9. MTP in Android详解
  10. 【Java|Swing】关于JLabel换行