javascript截取字符串小结


Posted in Javascript onApril 28, 2015

本文总结介绍了三种使用Javascript截取字符串的方法,同时也总结了两种截取中文字符串的办法,分享一下。

1.substring 方法

定义和用法
substring 方法用于提取字符串中介于两个指定下标之间的字符。

语法
stringObject.substring(start,stop)

参数 描述
start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
stop 可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。

返回值
一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。

说明
substring 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。
如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。
如果 start 或 end 为负数,那么它将被替换为 0。
具体使用案例:

var str = "0123456789"; 
alert(str.substring(0));------------"0123456789" 
alert(str.substring(5));------------"56789" 
alert(str.substring(10));-----------"" 
alert(str.substring(12));-----------"" 
alert(str.substring(-5));-----------"0123456789" 
alert(str.substring(-10));----------"0123456789" 
alert(str.substring(-12));----------"0123456789" 
alert(str.substring(0,5));----------"01234" 
alert(str.substring(0,10));---------"0123456789" 
alert(str.substring(0,12));---------"0123456789" 
alert(str.substring(2,0));----------"01" 
alert(str.substring(2,2));----------"" 
alert(str.substring(2,5));----------"234" 
alert(str.substring(2,12));---------"23456789" 
alert(str.substring(2,-2));---------"01" 
alert(str.substring(-1,5));---------"01234" 
alert(str.substring(-1,-5));--------""

2.substr 方法

定义和用法
substr 方法用于返回一个从指定位置开始的指定长度的子字符串。

语法
stringObject.substr(start [, length ])

参数 描述
start 必需。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。
length 可选。在返回的子字符串中应包括的字符个数。

说明
如果 length 为 0 或负数,将返回一个空字符串。
如果没有指定该参数,则子字符串将延续到stringObject的最后。

具体使用案例:

var str = "0123456789"; 
alert(str.substr(0));---------------"0123456789" 
alert(str.substr(5));---------------"56789" 
alert(str.substr(10));--------------"" 
alert(str.substr(12));--------------"" 
alert(str.substr(-5));--------------"0123456789" 
alert(str.substr(-10));-------------"0123456789" 
alert(str.substr(-12));-------------"0123456789" 
alert(str.substr(0,5));-------------"01234" 
alert(str.substr(0,10));------------"0123456789" 
alert(str.substr(0,12));------------"0123456789" 
alert(str.substr(2,0));-------------"" 
alert(str.substr(2,2));-------------"23" 
alert(str.substr(2,5));-------------"23456" 
alert(str.substr(2,12));------------"23456789" 
alert(str.substr(2,-2));------------"" 
alert(str.substr(-1,5));------------"01234" 
alert(str.substr(-1,-5));-----------""

3.自定义方法

以上两种方法只可以对英文和数字进行截取,遇到中文便无可奈何了,强制使用会导致出现乱码的情况,经本人认证研究终于总结出了两种能够使用Javascript截取字符串中包含中文的方法:

第一种方法:

String.prototype.sub=function(n){ 
  var r=/[^\x00-\xff]/g; 
  if(this.replace(r,"mm").length<=n){return this;} 
  var m=Math.floor(n/2); 
  for(var i=m;i<this.length;i++){ 
    if(this.substr(0,i).replace(r,"mm").length>=n){ 
      return this.substr(0,i)+"..."; 
    } 
  } 
  return this; 
}

第二种方法:
//截取字符串 包含中文处理,参数含义:(字符串,截取长度,是否增加...) 

function subString(str, len, hasDot){ 
  var newLength=0; 
  var newStr=""; 
  var chineseRegex=/[^\x00-\xff]/g; 
  var singleChar=''; 
  var strLength=str.replace(chineseRegex,'**').length; 
  for(var i=0;i < strLength;i++){ 
  singleChar=str.charAt(i).toString(); 
  if(singleChar.match(chineseRegex) != null){ 
    newLength+=2; 
  }else{ 
    newLength++; 
  } 
  if(newLength>len){ 
    break; 
  } 
  newStr+=singleChar; 
  } 
   
  if(hasDot && strLength>len){ 
    newStr+='...'; 
  } 
  return newStr; 
}

以上使用Js截取中文字符串的具体使用方法如下:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Javascript字符串截取处理总结(Js截取中文字符串总结)</title> 
<script language="javascript"> 
String.prototype.sub=function(n){var r=/[^\x00-\xff]/g;if(this.replace(r,"mm").length<=n){return this}var m=Math.floor(n/2);for(var i=m;i<this.length;i++){if(this.substr(0,i).replace(r,"mm").length>=n){return this.substr(0,i)+"..."}}return this}; 
function subString(str,len,hasDot){var newLength=0;var newStr="";var chineseRegex=/[^\x00-\xff]/g;var singleChar='';var strstrLength=str.replace(chineseRegex,'**').length;for(var i=0;i<strLength;i++){singleChar=str.charAt(i).toString();if(singleChar.match(chineseRegex)!=null){newLength+=2}else{newLength++}if(newLength>len){break}newStr+=singleChar}if(hasDot&&strLength>len){newStr+='...'}return newStr} 
</script> 
</head> 
<body> 
<script language="javascript"> 
var str='我爱3water.com'; 
alert(str.sub(10)); 
alert(subString(str,10,false)); 
</script> 
</body> 
</html>

以上所述就是本文的所有内容了,希望大家能够喜欢。

Javascript 相关文章推荐
建立良好体验度的Web注册系统ajax
Jul 09 Javascript
javascript实现div的显示和隐藏的小例子
Jun 25 Javascript
jquery动态加载select下拉框示例代码
Dec 10 Javascript
遍历DOM对象内的元素属性示例代码
Feb 08 Javascript
js实现的复制兼容chrome和IE
Apr 03 Javascript
javascript日期格式化方法汇总
Oct 04 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 Javascript
ES6深入理解之“let”能替代”var“吗?
Jun 28 Javascript
基于JS开发微信网页录音功能的实例代码
Apr 30 Javascript
JS实现长图上下滚动效果
Mar 19 Javascript
vue-video-player视频播放器使用配置详解
Oct 23 Javascript
Vue中引入svg图标的两种方式
Jan 14 Vue.js
JavaScript 实现完美兼容多浏览器的复制功能代码
Apr 28 #Javascript
jQuery通过Ajax返回JSON数据
Apr 28 #Javascript
javascript实现控制文字大中小显示
Apr 28 #Javascript
Jquery中$.post和$.ajax的用法小结
Apr 28 #Javascript
轻量级的原生js日历插件calendar.js使用指南
Apr 28 #Javascript
javascript中Function类型详解
Apr 28 #Javascript
浅谈Jquery为元素绑定事件
Apr 27 #Javascript
You might like
PHP之uniqid()函数用法
2014/11/03 PHP
提高php编程效率技巧
2015/08/13 PHP
PHP多进程编程实例详解
2017/07/19 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
Vue的Options用法说明
2020/08/14 Javascript
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
python写入文件自动换行问题的方法
2019/07/05 Python
如何使用python切换hosts文件
2020/04/29 Python
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
精细化工应届生求职信
2013/11/17 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
中标通知书范本
2015/04/17 职场文书
2015年小学生暑假总结
2015/07/13 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
Java字符串逆序方法详情
2022/03/21 Java/Android