Comment puis-je convertir une chaîne comme 'helloThere' ou 'HelloThere' en 'Hello There' en JavaScript ?
Réponses
Trop de publicités?Utilisation de JS String.prototype.replace() et String.prototype.toUpperCase()
const str = "thisIsATestString";
const res = str.replace(/^[a-z]|[A-Z]/g, (c, i) => (i? " " : "") + c.toUpperCase());
console.log(res); // "This Is A Test String"
La réponse la plus compatible pour des mots consécutifs en majuscules c'est ça :
var text = 'theKD';
var result = text.replace(/([A-Z]{1,})/g, " $1");
var finalResult = result.charAt(0).toUpperCase() + result.slice(1);
console.log(finalResult);
- Il est également compatible avec " Le KD "et il ne le convertira pas en " Le K D ".
Je n'ai pas essayé les réponses de tout le monde, mais les quelques solutions que j'ai bricolées ne correspondaient pas à toutes mes exigences.
J'ai réussi à trouver quelque chose qui fait...
export const jsObjToCSSString = (o={}) =>
Object.keys(o)
.map(key => ({ key, value: o[key] }))
.map(({key, value}) =>
({
key: key.replace( /([A-Z])/g, "-$1").toLowerCase(),
value
})
)
.reduce(
(css, {key, value}) =>
`${css} ${key}: ${value}; `.trim(),
'')
Vous trouverez ci-dessous un lien qui vous permettra de transformer une chaîne de caractères avec une casse de type camel en une chaîne de caractères avec une expression rationnelle.
Entrée
myCamelCaseSTRINGToSPLITDemo
Sortie
my Camel Case STRING To SPLIT Demo
Il s'agit d'une regex pour la conversion de la casse camel en texte de phrase.
(?=[A-Z][a-z])|([A-Z]+)([A-Z][a-rt-z][a-z]\*)
avec $1 $2
en tant que subsitution.