180 votes

Comment diviser une chaîne de caractères en un tableau de caractères ?

var s = "overpopulation";
var ar = [];
ar = s.split();
alert(ar);

Je veux découper un mot en un tableau de caractères.

Le code ci-dessus ne semble pas fonctionner - il renvoie "surpopulation" en tant qu'objet

Comment la diviser en un tableau de caractères si la chaîne originale ne contient pas de virgules ni d'espaces ?

0 votes

1 votes

Ar est une variable de type tableau mais alert() prend des variables de type chaîne de caractères :)

0 votes

284voto

lonesomeday Points 95456

Vous pouvez effectuer un fractionnement sur une chaîne vide :

var chars = "overpopulation".split('');

Si vous souhaitez simplement accéder à une chaîne de caractères à la manière d'un tableau, vous pouvez le faire sans split :

var s = "overpopulation";
for (var i = 0; i < s.length; i++) {
    console.log(s.charAt(i));
}

Vous pouvez également accéder à chaque caractère avec son index en utilisant la syntaxe normale des tableaux. Notez cependant que les chaînes de caractères sont immuables, ce qui signifie que vous ne pouvez pas fixer la valeur d'un caractère en utilisant cette méthode, et qu'elle n'est pas supportée par IE7 (si cela vous importe encore).

var s = "overpopulation";

console.log(s[3]); // logs 'r'

3 votes

Vous pouvez également accéder aux caractères de la chaîne de caractères sous forme de tableau, comme suit : mystr = "apples"; mystr[0]; // a

9 votes

Cela ne fonctionne PAS pour les emojis "".length #=> 1 "".chars #=> [""]

4 votes

Les caractères larges ne sont pas pris en compte.

21voto

pimvdb Points 66332

C'est aussi simple que cela :

s.split("");

Le délimiteur est une chaîne vide, qui s'interrompt donc entre chaque caractère.

3 votes

Ne prend pas en compte les caractères larges.

11voto

Diana Ionita Points 472

La méthode split() en javascript accepte deux paramètres : un séparateur et une limite. Le séparateur spécifie le caractère à utiliser pour diviser la chaîne. Si vous ne spécifiez pas de séparateur, la chaîne entière est renvoyée, non séparée. Mais si vous spécifiez la chaîne vide comme séparateur, la chaîne est divisée entre chaque caractère.

C'est pourquoi :

s.split('')

aura l'effet escompté.

Plus d'informations aquí

7voto

Jamie Dixon Points 23891

En Javascript, une chaîne de caractères est déjà un tableau de caractères.

Vous pouvez simplement accéder à n'importe quel caractère du tableau comme vous le feriez pour n'importe quel autre tableau.

var s = "overpopulation";
alert(s[0]) // alerts o.

MISE À JOUR

Comme indiqué dans les commentaires ci-dessous, la méthode ci-dessus pour accéder à un caractère dans une chaîne fait partie de l'ECMAScript 5 auquel certains navigateurs peuvent ne pas se conformer.

Vous pouvez également utiliser la méthode suivante charAt(index) .

var s = "overpopulation";
    alert(s.charAt(0)) // alerts o.

2 votes

Cela ne fonctionne cependant pas dans tous les navigateurs (pas dans certaines versions d'IE) : developer.mozilla.org/en/JavaScript/Référence/Global_Objects/ .

0 votes

Merci Felix. J'ai mis à jour ma réponse pour inclure charAt comme défini avant ECMAScript 5.

5voto

Gumbo Points 279147

Vous pouvez utiliser l'expression régulière /(?!$)/ :

"overpopulation".split(/(?!$)/)

L'affirmation négative de l'anticipation (?!$) correspondra juste devant chaque caractère.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X