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?

user695663
la source
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
2
Copie possible de la façon d'obtenir le dernier caractère d'une chaîne?
Stephan Weinhold

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).

Jamon Holmgren
la source
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

Terence
la source
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);
user682701
la source
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.

Zirak
la source
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

Tamil
la source
4
Non compatible avec IE, voir ma réponse.
Terence
7

Découvrez la fonction de sous - chaîne .

Pour obtenir le dernier caractère:

id.substring(id.length - 1, id.length);
Chewpers
la source
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"
Nello Ollen
la source
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"
Adam Whateverson
la source
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".

Keivan
la source
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' :)

Zalaboza
la source
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
mikeborgh
la source
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);
Andrew Mallonee
la source
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);    

}
vijay yaragall
la source
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
        });
Daniel Adenew
la source
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);

rajmobiapp
la source
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"

Jamil Moughal
la source