技术实践

JS截取字符串常用方法

在js中字符截取函数有常用的三个slice()、substring()、substr()了,下面我来给大家介绍slice()、substri

羊先生的头像
羊先生2020.03.11 · 5 分钟阅读 · 54 阅读
JS截取字符串常用方法封面
文章正文还需 5 分钟

1、js截取两个字符串之间的内容:

js 复制代码
var str = "aaabbbcccdddeeefff";
str = str.match(/aaa(\S*)fff/)[1];
alert(str);//结果bbbcccdddeee

2、js截取某个字符串前面的内容:

js 复制代码
var str = "aaabbbcccdddeeefff";
tr = str.match(/(\S*)fff/)[1];
alert(str);//结果aaabbbcccddd

3、js截取某个字符串后面的内容:

js 复制代码
var str = "aaabbbcccdddeeefff";
str = str.match(/aaa(\S*)/)[1];
alert(str);//结果bbbcccdddeeefff

4、函数:split()
功能:使用一个指定的分隔符把一个字符串分割存储到数组

js 复制代码
str=”jpg|bmp|gif|ico|png”; 
arr=theString.split(”|”); 
//arr是一个包含字符值”jpg”、”bmp”、”gif”、”ico”和”png”的数组 

5、函数:Join()
功能:使用您选择的分隔符将一个数组合并为一个字符串

js 复制代码
var delimitedString=myArray.join(delimiter); 
var myList=new Array(”jpg”,”bmp”,”gif”,”ico”,”png”); 
var portableList=myList.join(”|”); 
//结果是jpg|bmp|gif|ico|png 

6、函数:indexOf()
功能:返回字符串中匹配子串的第一个字符的下标

js 复制代码
var myString=”JavaScript”; 
var w=myString.indexOf(”v”);                        //w will be 2 
var x=myString.indexOf(”S”);                        //x will be 4 
var y=myString.indexOf(”Script”);                   //y will also be 4 
var z=myString.indexOf(”key”);                      //z will be -1 

7、函数:substring()

  • 功能:字符串截取,用于提取字符串中介于两个指定下标之间的字符,比如想从"MinidxSearchEngine”中得到"Minidx”就要用到substring(0,6)

  • 语法 :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。

8、函数:substr()

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

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

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

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

js 复制代码
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));--------"" 

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));-----------"" 

var t=window.location.href.split("/").length-1;
//将当前页面的URL以“/”分割,并获取所得数组的长度减1的数值(刚好是数组最后一个元素的索引值)
var str=window.location.href.split("/")[t].substr(0,4);
//截取数组最后一个元素中第一位到第五位的字符串

9、星号 * 处理手机号

js 复制代码
function noPassByMobile(str){
        if(null != str && str != undefined){
            var pat=/(\d{3})\d*(\d{4})/;
            return str.replace(pat,'$1****$2');
        } else {
            return "";
        }
}
noPassByMobile('13671806891')  // "136****6891"

10、星号 * 处理字符串

js 复制代码
function noPassByName(str){
        if(null != str && str != undefined){
            if(str.length <= 3){
                return "*" + str.substring(1,str.length);
            } else if(str.length > 3 && str.length <= 6){
                return "**" + str.substring(2,str.length);
            } else if(str.length > 6){
                return str.substring(0,2) + "****" + str.substring(6,str.length)
            }
        } else {
            return "";
        }
}
noPassByName('vipbic') // **pbic
noPassByName('www.vipbic.com') // ww****pbic.com

这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

参考文章
JS截取字符串常用方法整理
JS正则截取两个字符串之间及字符串前后内容的方法