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 相关文章推荐
JS 实现双色表格实现代码
Nov 24 Javascript
ASP 过滤数组重复数据函数(加强版)
May 31 Javascript
js中对象的声明方式以及数组的一些用法示例
Dec 11 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
Jan 06 Javascript
javascript 控制input只允许输入的各种指定内容
Jun 19 Javascript
javascript将浮点数转换成整数的三个方法
Jun 23 Javascript
jQuery validate插件功能与用法详解
Dec 15 Javascript
jQuery实现Select下拉列表进行状态选择功能
Mar 30 jQuery
vue中如何创建多个ueditor实例教程
Nov 14 Javascript
浅谈JavaScript 代码整洁之道
Oct 23 Javascript
jQuery AJAX应用实例总结
May 19 jQuery
JS中的继承操作实例总结
Jun 06 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
PHP json_decode函数详细解析
2014/02/17 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
jquery实现的导航固定效果
2014/04/28 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
元旦文艺汇演主持词
2014/03/26 职场文书
融资租赁计划书
2014/04/29 职场文书
青奥会口号
2014/06/12 职场文书
优秀会计求职信
2014/07/04 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android