51 votes

Diviser par les majuscules en Javascript

J'essaie de diviser une chaîne de caractères par des caps en utilisant Javascript,

Des exemples de ce que j'essaie de faire :

"HiMyNameIsBob"  ->   "Hi My Name Is Bob"
"GreetingsFriends" -> "Greetings Friends"

Je suis conscient de la str.split() mais je ne sais pas comment faire pour que cette fonction fonctionne avec des lettres majuscules.

J'ai essayé :

str.split("(?=\\p{Upper})")

Malheureusement, cela ne fonctionne pas, toute aide serait la bienvenue.

113voto

Rob W Points 125904

Utilisez les littéraux RegExp, un look-ahead et un système de contrôle de la qualité. [A-Z] :

console.log(
  // -> "Hi My Name Is Bob"
  window.prompt('input string:', "HiMyNameIsBob").split(/(?=[A-Z])/).join(" ")  
)

9voto

shiplu.mokadd.im Points 28895

Vous pouvez utiliser String.match pour le diviser.

"HiMyNameIsBob".match(/[A-Z]*[^A-Z]+/g) 
// output 
// ["Hi", "My", "Name", "Is", "Bob"]

Si vous avez des lettres minuscules au début, il peut aussi les diviser. Si vous ne voulez pas ce comportement, utilisez simplement + au lieu de * dans le motif.

"helloHiMyNameIsBob".match(/[A-Z]*[^A-Z]+/g) 
// Output
["hello", "Hi", "My", "Name", "Is", "Bob"]

4voto

Ste Points 732

Pour développer la réponse de Rob W.

Cela prend soin de toutes les phrases avec des abréviations en vérifiant les caractères minuscules précédents en ajoutant [a-z] par conséquent, il ne renverse aucune chaîne de caractères en majuscules.

// Enter your code description here
 var str = "THISSentenceHasSomeFunkyStuffGoingOn. ABBREVIATIONSAlsoWork.".split(/(?=[A-Z][a-z])/).join(" ");  // -> "THIS Sentence Has Some Funky Stuff Going On. ABBREVIATIONS Also Work."
 console.log(str);

1voto

M3ghana Points 1041

La solution pour un texte qui commence par la petite lettre -

let value = "getMeSomeText";
let newStr = '';
    for (var i = 0; i < value.length; i++) {
      if (value.charAt(i) === value.charAt(i).toUpperCase()) {
        newStr = newStr + ' ' + value.charAt(i)
      } else {
        (i == 0) ? (newStr += value.charAt(i).toUpperCase()) : (newStr += value.charAt(i));
      }
    }
    return newStr;

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