Comment puis-je obtenir les derniers caractères d'une chaîne


739

j'ai

var id="ctl03_Tabs1";

En utilisant JavaScript, comment puis-je obtenir les cinq derniers caractères ou le dernier caractère?


6
Pour obtenir le dernier caractère, la meilleure option serait id.charAt (id.length-1)
Dilhan Jayathilake

64
Note aux lecteurs: assurez-vous de lire au-delà de la première réponse, notamment celle de @Terence.
Offirmo

Réponses:


1085

EDIT: Comme d'autres l'ont souligné, utilisez slice(-5)plutôt que substr. Cependant, voyez la .split().pop()solution au bas de cette réponse pour une autre approche.

Réponse originale:

Vous voudrez utiliser la méthode de chaîne Javascript .substr()combinée à la .lengthpropriété.

var id = "ctl03_Tabs1";
var lastFive = id.substr(id.length - 5); // => "Tabs1"
var lastChar = id.substr(id.length - 1); // => "1"

Cela obtient les caractères commençant à id.length - 5 et, puisque le deuxième argument de .substr () est omis, continue jusqu'à la fin de la chaîne.

Vous pouvez également utiliser la .slice()méthode comme d'autres l'ont souligné ci-dessous.

Si vous cherchez simplement à trouver les caractères après le trait de soulignement, vous pouvez utiliser ceci:

var tabId = id.split("_").pop(); // => "Tabs1"

Cela divise la chaîne en un tableau sur le trait de soulignement, puis «fait sauter» le dernier élément du tableau (qui est la chaîne que vous voulez).


5
La première solution peut être raccourcie et plus rapide, voir ma réponse ci-dessous. Cependant, je suis d'accord avec l'idée de fractionnement et de pop dans cette situation particulière.
Terence

3
Comparé à .slice (-5) et .substr (longueur - 5), .split().pop()c'est un gros coup de performance. Si c'est quelque chose que vous utilisez en boucle et que les performances sont essentielles, vous devez garder cela à l'esprit.
nwayve

7
Dans votre test, .split().pop()c'est toujours 5 millions d'opérations par seconde. Ce n'est pas un problème de performances tant que ce n'est pas un problème de performances. ;)
Jamon Holmgren

1
@HutchMoore Vous avez raison. J'ai modifié ma réponse pour mentionner que slicec'est une meilleure option à ce stade.
Jamon Holmgren

1
Si vous essayez d'appliquer sliceou substrsur un nombre (int), convertissez-le d'abord en chaîne. Par exemplemyVar.toString().slice(-5)
dnns

804

Ne pas utiliser .substr(). Utilisez .slice()plutôt la méthode car elle est compatible avec tous les navigateurs (voir IE).

const id = "ctl03_Tabs1";
console.log(id.slice(id.length - 5)); //Outputs: Tabs1
console.log(id.slice(id.length - 1)); //Outputs: 1

substr () avec une valeur négative ne fonctionne pas dans IE


6
Oui, la tranche accepte les valeurs négatives, ce qui est génial! slice()référence: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Offirmo

3
Je préfère cette réponse, même si celle acceptée fonctionne très bien.
Dave Watts

3
Cela devrait être la réponse, utiliser slice de cette façon est également plus performant: jsperf.com/slice-vs-substr-and-length
thevinchi

Chrome 55 semble penser que substr est 20% plus rapide
fantapop

6
Je suppose que la tranche ne fonctionnera que si elle est cohérente? Et si c'était la fin _Tabs15? tranche (-5) ne ferait que saisir abs15? le split / pop fonctionne bien mieux pour des longueurs variées ...
Brian Ramsey

68

Vous pouvez utiliser la méthode substr () avec une position de départ négative pour récupérer les n derniers caractères. Par exemple, cela obtient les 5 derniers:

var lastFiveChars = id.substr(-5);

Meilleure et courte réponse. Pas besoin de connaître la longueur de la chaîne d'origine (pour les navigateurs actuels, nous excluons donc IE)
Thanh Trung

60

Obtenir le dernier caractère est facile, car vous pouvez traiter les chaînes comme un tableau:

var lastChar = id[id.length - 1];

Pour obtenir une section d'une chaîne, vous pouvez utiliser la fonction substr ou la fonction substring :

id.substr(id.length - 1); //get the last character
id.substr(2);             //get the characters from the 3rd character on
id.substr(2, 1);          //get the 3rd character
id.substr(2, 2);          //get the 3rd and 4th characters

La différence entre substret substringest la façon dont le deuxième paramètre (facultatif) est traité. Dans substr, c'est la quantité de caractères de l'index (le premier paramètre). Dans substring, c'est l'index de la fin du découpage des caractères.


1
vous avez une faute de frappe susbstr devrait être substr
George

24

Le script suivant montre le résultat pour obtenir les 5 derniers caractères et le dernier 1 caractère d'une chaîne en utilisant JavaScript:

var testword='ctl03_Tabs1';
var last5=testword.substr(-5); //Get 5 characters
var last1=testword.substr(-1); //Get 1 character

Production :

Tabs1 // 5 caractères

1 // J'ai 1 caractère


4
Non compatible avec IE, voir ma réponse.
Terence


7

Il n'est pas nécessaire d'utiliser la substrméthode pour obtenir un seul caractère d'une chaîne!

en prenant l'exemple de Jamon Holmgren, nous pouvons changer la méthode substr et simplement spécifier la position du tableau:

var id = "ctl03_Tabs1";
var lastChar = id[id.length - 1]; // => "1"

5

La fonction Substr vous permet d'utiliser un moins pour obtenir le dernier caractère.

var string = "hello";
var last = string.substr(-1);

C'est très flexible. Par exemple:

// Get 2 characters, 1 character from end
// The first part says how many characters
// to go back and the second says how many
// to go forward. If you don't say how many
// to go forward it will include everything
var string = "hello!";
var lasttwo = string.substr(-3,2);
// = "lo"

4

Une façon serait d'utiliser slice, comme suit:

var id="ctl03_Tabs1";
var temp=id.slice(-5);

donc la valeur de tempserait "Tabs1".


3

Si vous voulez juste le dernier caractère ou n'importe quel caractère à la position connue, vous pouvez simplement trater la chaîne comme un tableau! - les chaînes sont itérables en javascript -

Var x = "hello_world";
 x[0];                    //h
 x[x.length-1];   //d

Pourtant, si vous avez besoin de plus d'un caractère, utiliser l'épissure est efficace

x.slice(-5);      //world

Concernant votre exemple

"rating_element-<?php echo $id?>"

Pour extraire l'identifiant, vous pouvez facilement utiliser split + pop

Id= inputId.split('rating_element-')[1];

Cela renverra l'identifiant, ou indéfini si aucun identifiant n'était après 'rating_element' :)


2

En supposant que vous comparerez la sous-chaîne à la fin d'une autre chaîne et utiliserez le résultat comme un booléen, vous pouvez étendre la classe String pour accomplir ceci:

String.prototype.endsWith = function (substring) {
  if(substring.length > this.length) return false;
  return this.substr(this.length - substring.length) === substring;
};

Vous permettant de faire ce qui suit:

var aSentenceToPonder = "This sentence ends with toad"; 
var frogString = "frog";
var toadString = "toad";
aSentenceToPonder.endsWith(frogString) // false
aSentenceToPonder.endsWith(toadString) // true

1
var id="ctl03_Tabs1";
var res = id.charAt(id.length-1);

J'ai trouvé cette question et grâce à des recherches, j'ai trouvé que c'était le moyen le plus simple d'obtenir le dernier personnage.

Comme d'autres l'ont mentionné et ajouté pour être complet afin d'obtenir les 5 derniers:

var last5 = id.substr(-5);

0

Celui-ci supprimera la virgule s'il s'agit du dernier caractère de la chaîne.

var str = $("#ControlId").val();

if(str.substring(str.length-1)==',') {

  var stringWithoutLastComma = str.substring(0,str.length-1);    

}

4
Cela n'a presque rien à voir avec la question initiale.
silasjmatson

0

J'ai en fait le problème suivant et voici comment je l'ai résolu à l'aide de la réponse ci-dessus, mais une approche différente pour extraire l'id d'un élément d'entrée.

J'ai joint une entrée déposée auprès d'un

id="rating_element-<?php echo $id?>"

Et, lorsque ce bouton a cliqué, je veux extraire l'id (qui est le nombre) ou l'ID php ($ id) uniquement.

Voici donc ce que je fais.

 $('.rating').on('rating.change', function() {
            alert($(this).val());
           // console.log(this.id);
           var static_id_text=("rating_element-").length;       
           var product_id =  this.id.slice(static_id_text);       //get the length in order to deduct from the whole string    
          console.log(product_id );//outputs the last id appended
        });

0

5 derniers

var id="ctl03_Tabs1";
var res = id.charAt(id.length-5)
alert(res);

Dernier

   
 var id="ctl03_Tabs1";
 var res = id.charAt(id.length-1)
alert(res);


Pour le premier exemple, passez charAtà substr. Cela charAtobtient l'avant -dernier .
Regular Joe

-1

Je suis sûr que cela fonctionnera ...

var string1="myfile.pdf"
var esxtenion=string1.substr(string1.length-4)

La valeur de extensionsera".pdf"

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.