Comment obtenir le premier caractère de la chaîne?

595

J'ai une chaîne et j'ai besoin d'obtenir son premier caractère.

var x = 'somestring';
alert(x[0]); //in ie7 returns undefined

Comment puis-je réparer mon code?

Simon
la source
5
faites juste attention - vous pourriez ne pas avoir de personnage à extraire!
corsiKa

Réponses:

1046

Ce que tu veux c'est charAt.

var x = 'some string';
alert(x.charAt(0)); // alerts 's'
Daniel Vandersluis
la source
11
A travaillé sur IE7, Chrome, Firefox.
Yuriy Faktorovich
78
Je voulais juste laisser le doc MDN ici. Je préfère généralement cela à w3schools.
danwit
12
x.charAt()renverra également le premier caractère comme si aucun index n'est passé à cette méthode, il l'assumera au 0.
Mohammad Usman
1
@MohammadUsman Bien que ce que vous dites soit vrai, malheureusement charAt () sans aucun paramètre s'exécute environ 10 fois plus lentement que chartAt (0) dans Firefox à partir de Firefox 71. Voyez par vous-même ici: jsperf.com/testing-the-first-character- dans une chaîne / 1
Stephen M Irving
Cette solution est bonne pour ASCII, mais elle se brisera de toutes sortes dès que vous en aurez plus que cela. "👍".charAt(0)renvoie "\ud83d", "café".charAt(3)renvoie eet supprime l'accent, etc. stackoverflow.com/questions/38345372/… a quelques informations et une bonne alternative (utilisez une bibliothèque)
Clément
149

En JavaScript, vous pouvez le faire:

const x = 'some string';
console.log(x.substring(0, 1));

Dustin Laine
la source
5
si vous préférez utiliser des fonctions de sous-chaîne, le x.slice(0,1)est plus court. Et pour obtenir le dernier caractère, utilisez simplement:x.slice(-1)
S.Serpooshan
60

Vous pouvez utiliser n'importe lequel de ces éléments.

Il y a une petite différence entre tous ces éléments. Soyez donc prudent lorsque vous l'utilisez dans une déclaration conditionnelle.

var string = "hello world";
console.log(string.slice(0,1));     //o/p:- h
console.log(string.charAt(0));      //o/p:- h
console.log(string.substring(0,1)); //o/p:- h
console.log(string.substr(0,1));    //o/p:- h
console.log(string[0]);             //o/p:- h


var string = "";
console.log(string.slice(0,1));     //o/p:- (an empty string)
console.log(string.charAt(0));      //o/p:- (an empty string)
console.log(string.substring(0,1)); //o/p:- (an empty string)
console.log(string.substr(0,1));    //o/p:- (an empty string)
console.log(string[0]);             //o/p:- undefined
Shailesh Sonare
la source
3
string.substr (0,1) manquant; :)
Luckylooke
28

const x = 'some string';
console.log(x.substring(0, 1));

ŁukaszW.pl
la source
11
la sous-chaîne est environ 90% plus lente car charAt
moritzw
18

Exemple de toute méthode

D'abord :string.charAt(index)

Renvoie le caractère à l'index index

var str = "Stack overflow";

console.log(str.charAt(0));

Deuxièmement :string.substring(start,length);

Renvoie la sous-chaîne de la chaîne qui commence à l'index startet s'arrête après la longueurlength

Ici, vous ne voulez que le premier caractère: start = 0etlength = 1

var str = "Stack overflow";

console.log(str.substring(0,1));

Alternative :string[index]

Une chaîne est un tableau de caractères. Vous pouvez donc obtenir le premier caractère comme la première cellule d'un tableau.

Renvoie le caractère à l'index indexde la chaîne

var str = "Stack overflow";

console.log(str[0]);

Alexis
la source
Le chronométrage d'une seule opération à l'aide de console.time () n'est pas un test de performance raisonnable ou précis. Bien sûr, il n'y a pas de grande différence entre eux lorsque vous ne chronométrez qu'une seule opération. Ces méthodes fonctionnent en fait différemment.
Stephen M Irving
17
var x = "somestring"
alert(x.charAt(0));

La méthode charAt () vous permet de spécifier la position du caractère souhaité.

Ce que vous essayez de faire, c'est d'obtenir le caractère à la position d'un tableau "x", qui n'est pas défini car X n'est pas un tableau.

Eton B.
la source
15

Vous pouvez même utiliser slicepour couper tous les autres caractères:

x.slice(0, 1);
yckart
la source
Cette méthode sera l'une des méthodes les moins performantes pour résoudre ce problème. Sous-optimal.
Stephen M Irving,
7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

Testé dans IE6 + , FF , Chrome , safari .

Swathi
la source
12
juste curieux, y a-t-il une raison pour laquelle vous avez posté cette réponse? Cela semble être un double de la réponse acceptée.
Manatherin
5
Ils ont donné quelques informations supplémentaires (même si cela aurait dû être un commentaire) ... comme les navigateurs indexOfdans lesquels il a été testé. Je sais que cela ne fonctionne pas dans IE8 et c'est assez important pour moi. En fait, j'ai commencé à utiliser la compatibilité Google CharAt jusqu'à ce que je voie cette réponse ici.
gloomy.penguin
6

Essayez aussi ceci:

x.substr(0, 1);
AmazingDayToday
la source
substr () est considéré comme une fonction héritée et doit être évité si possible. Il ne fait pas réellement partie du langage JS et pourrait être supprimé à tout moment. Évitez d'utiliser substr () dans tout nouveau code et l'ancien code doit être refactorisé pour utiliser d'autres méthodes. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Stephen M Irving
2

x.substring(0,1)

Détails

substring(start, end) extrait les caractères d'une chaîne, entre les 2 indices "début" et "fin", sans compter "fin" lui-même.

Notes spéciales

  • Si "début" est supérieur à "fin", cette méthode permute les deux arguments, ce qui signifie str.substring (1, 4) == str.substring (4, 1).
  • Si "début" ou "fin" est inférieur à 0, il est traité comme s'il était égal à 0.
edelans
la source
2

On dirait que je suis en retard à la fête, mais essayez la solution ci-dessous que j'ai personnellement trouvée la meilleure solution:

var x = "testing sub string"
alert(x[0]);
alert(x[1]);

La sortie doit afficher une alerte avec les valeurs ci-dessous: "t" "e"

Dilip
la source
0

dans JQuery, vous pouvez utiliser: en classe pour l'option Select:

$('.className').each(function(){
    className.push($("option:selected",this).val().substr(1));
});

en classe pour le texte Valeur:

$('.className').each(function(){
    className.push($(this).val().substr(1));
});

dans l'ID du texte Valeur:

$("#id").val().substr(1)
Amranur Rahman
la source
0

dans Nodejs, vous pouvez utiliser Buffer:

let str = "hello world"
let buffer = Buffer.alloc(2, str) // replace 2 by 1 for the first char
console.log(buffer.toString('utf-8')) // display he
console.log(buffer.toString('utf-8').length) // display 2
Sylvain Joly
la source
0
var string  = "Hello World";
console.log(charAt(0));

Le charAt (0) est une méthode JavaScript, il retournera une valeur basée sur l'index, ici 0 est l'index de la première lettre.

Sreehari Ballampalli
la source