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 相关文章推荐
Array.prototype 的泛型应用分析
Apr 30 Javascript
侧栏跟随滚动的简单实现代码
Mar 18 Javascript
javascript单例模式的简单实现方法
Jul 25 Javascript
JS模拟bootstrap下拉菜单效果实例
Jun 17 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
js实现的简练高效拖拽功能示例
Dec 21 Javascript
深入理解Javascript箭头函数中的this
Feb 13 Javascript
vue $set 给数据赋值的实例
Nov 09 Javascript
Vue-axios-post数据后端接不到问题解决
Jan 09 Javascript
深入理解 ES6中的 Reflect用法
Jul 18 Javascript
Java 生成随机字符的示例代码
Jan 13 Javascript
vue中 this.$set的使用详解
Nov 17 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
PHP获取url的函数代码
2011/08/02 PHP
php 伪静态之IIS篇
2014/06/02 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
php生成随机颜色的方法
2014/11/13 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
10条php编程小技巧
2015/07/07 PHP
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
javascript 获取表单file全路径
2009/12/31 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
python计算文本文件行数的方法
2015/07/06 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
使用python绘制常用的图表
2016/08/27 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
Django如何实现上传图片功能
2019/08/16 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
2014年大班元旦活动方案
2014/02/26 职场文书
大学军训口号大全
2015/12/24 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技