JavaScript字符串截取方法大全:substring、slice及中文字符处理技巧
本文总结并介绍了三种能够使用 Javascript 来截取字符串的方法,并且还总结了两种用于截取中文字符串的办法,现在将这些内容分享出来。

1.substring 方法
具体而言:是提取介于两个指定下标之间的字符。
语法中包含 substring 方法,该方法需要传入两个参数,分别是起始位置 start 和结束位置 stop 。
- stop 是可选的,它是一个非负整数,其值比要提取的子串的最后一个字符在 stringObject 中的位置多 1。若省略该参数,返回的子串会一直到字符串的结尾。
返回值是一个新的字符串,这个字符串包含了 stringObject 的一个子字符串。它的内容是从 start 这个位置开始,到 stop - 1 这个位置结束的所有字符。其长度为 stop 减去 start 。
substring 方法返回的子串包含 start 位置的字符,然而不包含 end 位置的字符。若 start 与 end 相等,此方法所返回的是一个空串,也就是长度为 0 的字符串。要是 start 比 end 大,在提取子串之前该方法会先将这两个参数进行交换。如果 start 为负数,那么 start 将被替换为 0。如果 end 为负数,那么 end 将被替换为 0。
var str = "0123456789"; alert 函数接收到了字符串 str 从开头截取的部分;这个被截取的部分就是 "0123456789" ;也就是说,alert 函数接收到的是 "0123456789" 这个字符串。 alert 这个函数接收一个字符串参数,然后截取该字符串从索引 5 开始之后的部分。这里的字符串是 "56789" ,所以截取后得到的结果会被输出到控制台。 alert 这个函数用于输出字符串,这里输出的是字符串 str 从索引 10 开始的部分。 alert 函数作用于字符串 str 从索引 12 开始的部分。 alert(str.substring(5)); // 从索引 5 开始截取字符串 "0123456789" 之后的部分 alert 函数用于输出字符串。这里使用了 str.substring(-10) 来截取字符串。原始字符串为 "0123456789",通过截取操作获取从后往前数第 10 个字符开始到字符串末尾的部分并输出。 alert 函数作用于字符串 str 从倒数第 12 位开始的部分;"0123456789" 是一个特定的字符串。 alert 字符串中从索引 0 开始到索引 4(包含 0 不包含 5)的子串;这个子串是 "01234" 。 alert 函数作用于字符串 str ,截取其从开始位置到第 10 个字符之前的部分;这里截取的部分是 "0123456789" 。 alert 函数接收到字符串 str 的子串,子串的起始位置是 0,结束位置是 11;该子串的内容为 "0123456789"。 alert(str.substring(2, 0)); 这部分代码会截取字符串 str 中从索引 2 开始到索引 0 结束的子字符串,但是由于索引 2 大于索引 0,所以实际上不会截取到任何字符,只是会执行相关的操作。这里的 "01" 可能是与该操作相关的其他标识或信息,但仅从这部分代码本身无法明确其具体含义。 alert 函数的参数为字符串 str 从索引 2 开始到索引 2 结束的子字符串;该子字符串为空字符串 "" 。 alert 函数作用于字符串 str ,截取其从索引 2 开始到索引 5 结束的部分;截取后的部分为 "234" 。 alert 函数获取字符串 str 从索引 2 到索引 11 的子字符串;这个子字符串是 "23456789" 。 alert 函数作用于字符串 str,截取其从索引 2 开始到索引 -2 结束的部分。 这里的字符串是 "01" 。 alert 函数使用了字符串 str 的子字符串,起始位置为 -1,结束位置为 5;具体的子字符串内容为 "01234"。 alert 函数用于截取字符串 str 中从索引 -1 到索引 -5 之间的部分。
2.substr 方法
substr 方法的定义和用法是用于获取一个从特定位置开始且具有指定长度的子字符串。 它主要作用是从指定位置开始提取子字符串,并规定子字符串的长度。 该方法可以准确地截取到所需的子字符串部分。
语法中包含了一个名为 stringObject 的对象,通过调用它的 substr 方法来进行操作,该方法需要传入两个参数,一个是 start ,另一个是可选的 length 。
- length 是可选的,它表示在返回的子字符串中应包含的字符个数。
如果 length 的值为 0 或者是负数,那么就会返回一个空字符串。倘若没有对该参数进行指定,子字符串将会延续到 stringObject 的最后。
具体使用案例:
var str = "0123456789"; alert 这个函数作用于字符串 str 从开头开始截取的部分;str 是一个包含 "0123456789" 的字符串;该截取操作是从 str 的起始位置 0 开始,截取到字符串的末尾;最终 alert 函数显示的是 str 从 0 位置开始的子字符串。 alert 字符串截取自原字符串的第 5 位开始的部分;该部分内容为 "56789" 。 alert 字符串的从第 10 位开始的子串。 提醒(字符串截取从第 12 位开始); alert 接收 "0123456789" 字符串并提取其从末尾开始的 5 位之后的内容。 所以 alert 这个子串,即 alert("0123456789")。 alert 函数的参数为字符串 str 从最后一位开始截取的 12 个字符;该字符串为 "0123456789"。 alert 函数作用于字符串 str ,截取其从索引 0 开始的 5 个字符。 alert 函数获取字符串 str 从索引 0 开始长度为 10 的子串;该子串为 "0123456789";然后对这个子串进行 alert 操作。 所以 alert 函数会截取 "0123456789" 的前 12 个字符。 alert(字符串截取操作,从索引 2 开始,截取 0 个字符); alert 函数接收到字符串 str 从索引 2 开始长度为 2 的子串;这个子串的值为 "23";所以 alert 函数会弹出 "23" 。 alert 函数作用于字符串 str ,从索引 2 开始截取长度为 5 的子字符串 ;该子字符串为 "23456" 。 alert 函数获取字符串 str 从索引 2 开始长度为 12 的子串;该子串为 "23456789"。 alert 函数接收一个字符串,该字符串是通过对另一个字符串调用 substr 方法截取得到的,截取的起始位置是 2,截取的长度是 -2 后得到的字符串。 alert 函数用于输出字符串的一部分。这里是截取字符串 `str` 从倒数第 1 个字符开始的长度为 5 的子字符串。具体来说,就是截取 `str` 的最后 5 个字符并进行输出。在这个例子中,输出的是 "01234"。 alert(截取字符串 str 从最后一位开始往前数 5 位的子串);
3.自定义方法
以上两种方法仅能对英文和数字进行截取,而遇到中文就无法处理了。若强制使用,会导致出现乱码的情况。经过本人的认证研究,最终总结出了两种能够在 Javascript 中截取包含中文的字符串的方法:
第一种方法:
定义一个函数 sub ,该函数属于 String 原型对象 ,函数接收一个参数 n
var r=/[^\x00-\xff]/g;
如果这个字符串经过替换操作(将其中的 r 替换为 mm)后的长度<=n){return this;}
var m=Math.floor(n/2);
for(var i=m;i=n){
返回这个字符串从开始位置到索引 i 之前的部分,然后加上省略号"..."。
}
}
return this;
}
第二种方法:截取字符串,此操作包含中文处理。其参数含义为:给定一个字符串,以及截取的长度,还有是否增加等相关内容。
定义一个函数 subString,它接受三个参数:str 表示要截取的字符串,len 表示截取的长度,hasDot 表示是否包含小数点。
var newLength=0;
var newStr="";
创建了一个名为 `chineseRegex` 的正则表达式,用于匹配非 ASCII 字符,即中文字符。它使用了正则表达式的 `g` 标志,表示全局匹配。
var singleChar='';
获取字符串 str 的长度,先将 str 中的中文部分用 ** 替换,然后获取替换后的字符串的长度,将其赋值给变量 strLength 。
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截取中文字符串的具体使用方法如下:
Javascript字符串截取处理总结(Js截取中文字符串总结)
以上所述就是本文的所有内容了,希望大家能够喜欢。
截取字符串