Maison > titres > le corps du texte

Méthodes d'interception et de fractionnement de chaîne JS : la différence entre substring, substr et slice

PHP中文网
Libérer: 2018-01-25 14:10:34
original
3060 Les gens l'ont consulté

Ces trois méthodes sont toutes des méthodes permettant d'extraire des sous-chaînes de chaînes. Bien qu'elles soient couramment utilisées, vous devez lire la documentation à chaque fois pour éviter les erreurs de transfert de paramètres. Ce qui suit est une distinction détaillée entre ces trois méthodes.

sous-chaîne

String.substring(x,y) :
x : obligatoire. Entier non négatif qui spécifie la position dans stringObject du premier caractère de la sous-chaîne à extraire.
y : facultatif. Un entier non négatif qui est + 1 à partir de la position dans stringObject du dernier caractère de la sous-chaîne à extraire.

/2个参数的情况"abcdefg".substring(1,4); //"bcd"//1个参数的情况:返回开始位置到字符串的结尾"abcdefg".substring(1); //"bcdefg"//如果x=y:返回一个空串(即长度为 0 的字符串)"abcdefg".substring(1,1); //""//如果x>y:先交换这两个参数然后同第一种情况"abcdefg".substring(4,1); //"bcd"//如果x<0或y<0;会把小于0的参数当作0处理(理论上不接受负数);"abcdefg".substring(1,-4); 
=》"abcdefg".substring(1,0); 
=》"abcdefg".substring(0,1); //"a"
Copier après la connexion

Les exemples de cet article décrivent les méthodes courantes d'interception et de fractionnement de chaînes avec JS. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

JS peut utiliser substring() ou slice() pour intercepter des chaînes

函数:substring()
定义:substring(start,end)表示从start到end之间的字符串,包括start位置的字符但是不包括end位置的字符。
功能:字符串截取,比如想从"MinidxSearchEngine"中得到"Minidx"就要用到substring(0,6)


例子:

var src="images/off_1.png";
alert(src.substring(7,10));
//弹出值为:off
Copier après la connexion

函数:substr()

定义:substr(start,length)表示从start位置开始,截取length长度的字符串。

功能:字符串截取

例子:

var src="images/off_1.png";
alert(src.substr(7,3));
//弹出值为:off
Copier après la connexion

函数:split()

功能:使用一个指定的分隔符把一个字符串分割存储到数组

例子:

str="jpg|bmp|gif|ico|png";
arr=theString.split("|");
//arr是一个包含字符值"jpg"、"bmp"、"gif"、"ico"和"png"的数组
Copier après la connexion

函数:John()

功能:使用您选择的分隔符将一个数组合并为一个字符串

例子:

var delimitedString=myArray.join(delimiter);
var myList=new Array("jpg","bmp","gif","ico","png");
var portableList=myList.join("|");
//结果是jpg|bmp|gif|ico|png
Copier après la connexion

函数:indexOf()

功能:返回字符串中匹配子串的第一个字符的下标

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
Copier après la connexion

函数:lastIndexOf()

定义:lastIndexOf()方法返回从右向左出现某个字符或字符串的首个字符索引值(与indexOf相反)

功能:返回字符串索引值

var src="images/off_1.png";
alert(src.lastIndexOf(&#39;/&#39;));
alert(src.lastIndexOf(&#39;g&#39;));
//弹出值依次为:6,15
Copier après la connexion

补充:substr 和 substring方法的区别

substr 方法

返回一个从指定位置开始的指定长度的子字符串。

stringvar.substr(start [, length ])

参数

stringvar 必选项。要提取子字符串的字符串文字或 String 对象。

start 必选项。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。

length可选项。在返回的子字符串中应包括的字符个数。

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

示例 下面的示例演示了substr 方法的用法。

function SubstrDemo(){
  var s, ss;        // 声明变量。
  var s = "The rain in Spain falls mainly in the plain.";
  ss = s.substr(12, 5); // 获取子字符串。
  return(ss);        // 返回 "Spain"。
}
Copier après la connexion

substring 方法

返回位于 String 对象中指定位置的子字符串。

strVariable.substring(start, end)
"String Literal".substring(start, end)

参数

start 指明子字符串的起始位置,该索引从 0 开始起算。

end 指明子字符串的结束位置,该索引从 0 开始起算。

说明 substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串。

substring 方法使用 start 和 end 两者中的较小值作为子字符串的起始点。例如, strvar.substring(0, 3) 和 strvar.substring(3, 0) 将返回相同的子字符串。

如果 start 或 end 为 NaN 或者负数,那么将其替换为0。

子字符串的长度等于 start 和 end 之差的绝对值。例如,在 strvar.substring(0, 3) 和 strvar.substring(3, 0) 返回的子字符串的的长度是 3。

示例

下面的示例演示了 substring 方法的用法。

function SubstringDemo(){
  var ss; // 声明变量。
  var s = "The rain in Spain falls mainly in the plain..";
  ss = s.substring(12, 17); // 取子字符串。
  return(ss); // 返回子字符串。
}
Copier après la connexion

slice

String.slice(x,y): 
x:必需。要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。 
y:可选。要抽取的片段的结尾的下标+1。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。

//2个参数的情况"abcdefg".slice(1,4); //"bcd"//1个参数的情况:返回开始位置到字符串的结尾"abcdefg".slice(1); //"bcdefg"//如果x=y:返回一个空串(即长度为 0 的字符串)"abcdefg".slice(1,1); //""//如果x>y:返回一个空串(即长度为 0 的字符串)"abcdefg".slice(4,1); //""//如果x<0:从字符串的尾部开始算起的位置,-1 指字符串的最后一个字符,-2 指倒数第二个字符//如果y<0:从字符串的尾部开始算起的位置,-1 指字符串的最后一个字符,-2 指倒数第二个字符"abcdefg".slice(-1,8);//g"abcdefg".slice(1,-4); //bc12345678910111213141516
*因为slice不能像substring一样当x

substr

String.substr(x,y): 
x:必需。必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。 
y:可选。子串中的字符长度。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。

//Dans le cas de 2 paramètres "abcdefg".substr(1,4); //"bcde"//Dans le cas de 1 paramètre : renvoie la position de départ à la fin de la chaîne "abcdefg". substr(1) ; //"bcdefg"//If x<0;La position à partir de la fin de la chaîne. -1 fait référence au dernier caractère de la chaîne, -2 fait référence à l'avant-dernier caractère, et ainsi de suite. "abcdefg".substr(-1);//g "abcdefg".substr(-1,1);//g123456789
Important : ECMAscript ne standardise pas cette méthode et décourage donc son utilisation.

Important : Dans IE 4, la valeur du paramètre start n'est pas valide. Dans ce BUG, ​​start précise la position du 0ème caractère. Ce BUG a été corrigé dans les versions ultérieures. 123

Résumé

Le premier paramètre des trois méthodes est la position de départ, et le deuxième paramètre de substring et slice est la position de fin (à l'exclusion de cette position), slice et substr peut accepter des valeurs négatives mais le deuxième paramètre de substr est la longueur.

Alors la question est, comment obtenir le dernier caractère d'une chaîne ?

"abcdefg".substring(length-1);//g "abcdefg".slice(-1);//g "abcdefg".substr(-1);//g"abcdefg". charAt(longueur-1);//g 1234


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!