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 相关文章推荐
php与js的区别是什么
Aug 05 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
May 05 Javascript
JQuery1.8 判断元素是否绑定事件的方法
Jul 10 Javascript
javascript实现验证IP地址等相关信息代码
May 10 Javascript
详解JavaScript中的blink()方法的使用
Jun 08 Javascript
3种不同的ContextMenu右键菜单实现代码
Nov 03 Javascript
JS Testing Properties 判断属性是否在对象里的方法
Oct 01 Javascript
angularjs实现时间轴效果的示例代码
Nov 29 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
Mar 21 Javascript
微信小程序中使用wxss加载图片并实现动画效果
Aug 13 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
Aug 30 Javascript
vue获取验证码倒计时组件
Aug 26 Javascript
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
杏林同学录(五)
2006/10/09 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
JavaScript闭包实例讲解
2014/04/22 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
前端微信支付js代码
2016/07/25 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
js里面的变量范围分享
2020/07/18 Javascript
python实现在windows服务中新建进程的方法
2015/06/30 Python
理解python正则表达式
2016/01/15 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
python主线程捕获子线程的方法
2018/06/17 Python
Python下简易的单例模式详解
2019/04/08 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
python 模拟登陆github的示例
2020/12/04 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
Hotels.com印度:酒店预订
2019/05/11 全球购物
申请任职学生会干部自荐书范文
2014/02/13 职场文书
财务会计专业求职信
2014/06/09 职场文书
班级标语大全
2014/06/21 职场文书
实习工作表现评语
2014/12/31 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
房屋所有权证明
2015/06/19 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书