101 votes

Obtenir la première lettre de chaque mot dans une chaîne de caractères, en JavaScript

Comment procéder pour rassembler la première lettre de chaque mot d'une chaîne, comme pour obtenir une abréviation ?

Entrée : "Java Script Object Notation"

Sortie : "JSON"

213voto

BotNet Points 1367

Je pense que ce que vous cherchez est l'acronyme d'une chaîne fournie.

var str = "Java Script Object Notation";
var matches = str.match(/\b(\w)/g); // ['J','S','O','N']
var acronym = matches.join(''); // JSON

console.log(acronym)

Note : cela échouera pour les mots avec trait d'union/apostrophe Help-me I'm Dieing sera HmImD . Si ce n'est pas ce que vous voulez, l' diviser sur l'espace, saisir la première lettre pourrait être ce que vous voulez.

Voici un exemple rapide de cela :

let str = "Java Script Object Notation";
let acronym = str.split(/\s/).reduce((response,word)=> response+=word.slice(0,1),'')

console.log(acronym);

32voto

hugomg Points 29789

Je pense que vous pouvez le faire avec

'Aa Bb'.match(/\b\w/g).join('')

Explication : Obtenir tous les /g les caractères alphanumériques \w qui apparaissent après un caractère non alphanumérique (c'est-à-dire après une limite de mot). \b ), les mettre dans un tableau avec .match() et de joindre le tout en une seule chaîne .join('')


Selon ce que vous voulez faire, vous pouvez aussi envisager de sélectionner simplement tous les caractères majuscules :

'JavaScript Object Notation'.match(/[A-Z]/g).join('')

28voto

Almis Points 1916

Le moyen le plus simple sans regex

var abbr = "Java Script Object Notation".split(' ').map(function(item){return item[0]}).join('');

9voto

Aaron Taddiken Points 151

Cela est rendu très simple avec ES6

string.split(' ').map(i => i.charAt(0))               //Inherit case of each letter
string.split(' ').map(i => i.charAt(0)).toUpperCase() //Uppercase each letter
string.split(' ').map(i => i.charAt(0)).toLowerCase() //lowercase each letter

Cela fonctionne UNIQUEMENT avec les espaces ou tout ce qui est défini dans le champ .split(' ') método

ie, .split(', ') .split('; ') etc.

string.split(' ') .map(i => i.charAt(0)) .toString() .toUpperCase().split(',')

2 votes

Vous avez des erreurs de code. Les majuscules doivent être à l'intérieur de la carte.

2 votes

@JimmyKane string.split(' ').map((item) => item.charAt(0)).join('').toUpperCase() est probablement ce que vous recherchez.

5voto

Darryl Hebbes Points 134

Pour ajouter aux excellents exemples, vous pourriez le faire comme ceci en ES6

const x = "Java Script Object Notation".split(' ').map(x => x[0]).join('');
console.log(x);  // JSON

et ceci fonctionne aussi, mais ignorez-le, je suis devenu un peu fou ici :-)

const [j,s,o,n] = "Java Script Object Notation".split(' ').map(x => x[0]);
console.log(`${j}${s}${o}${n}`);

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