J'ai recherché une solution mais j'ai encore trouvé.
J'ai la chaîne suivante. p> Je veux les convertir en suivant: p> s'il n'y a pas d'espace et de soulignement dans la chaîne en majuscule en premier et tous les autres à minuscules. Si les mots sont séparés par le soulignement ou l'espace, puis la première lettre majuscule de chaque mot et enlevez l'espace et le soulignement. Comment puis-je faire cela dans JavaScript. P> Merci P> P>
5 Réponses :
Vous pouvez faire quelque chose comme ceci: Vous pouvez le tester Ici , l'approche est assez simple, .Split () code> la chaîne dans une matrice lors de la recherche d'une espace ou d'un soulignement. Ensuite, boucle à travers la matrice, la barre supérieure de la première lettre, la baisse du reste du reste ... puis prenez cet éventail de mots du titre et .JOIN () CODE> Il est à nouveau dans une chaîne. P> P>
function foo(str) {
return $.map(str.split(/\s|_/), function(word) {
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
}).join("");
}
Pourquoi avoir besoin de jQuery pour cela? Aussi .map () code> est conçu pour les objets JQuery, pas des tableaux réguliers, utilisez $. Carte () Code> Dans cette situation ... Bien que l'utilisation de jQuery ici (sauf si < Je suis déjà i> y compris cela) n'est pas une bonne approche ... et c'est moins efficace de toute façon.
@Nick Oui, la performance est plus faible. Cependant, le code est plus petit et plus lisible. Si l'OP utilise de toute façon JQuery sur la page, il devrait aller avec cette solution.
J'ai de bonnes réponses ici. Donc +1 pour tous. Mais la première réponse est acceptée. Merci
Cela supprimera également tous les espaces ou les traits de soulignement sur la chaîne. Aakil Fernandes Code> deviendra Aakilfernandes Code>
Voici une solution de regex:
première minuscule la chaîne: p> remplacez tous les Mise à jour: strong> MOINS ÉTAPES;) P> Explication: P> _ code> et les espaces et les premiers caractères dans un mot Avec le caractère majuscule: p> / // start of regex
(?: // starts a non capturing group
_| |\b // match underscore, space, or any other word boundary character
// (which in the end is only the beginning of the string ^)
) // end of group
( // start capturing group
\w // match word character
) // end of group
/g // and of regex and search the whole string
J'ai de bonnes réponses ici. Donc +1 pour tous. Mais la première réponse est acceptée. Merci
La solution est le meilleur de tous, mais je préfère utiliser // gi code> et supprimer le str.tolowercase (); code> ligne.
une mise à jour ES6 / fonctionnelle de @ Réponse de Nickcraver . Comme avec la réponse de @ Nickraver, cette fonction gérera correctement plusieurs espaces / traits de soulignement en les filtrant.
p>
const pascalWord = x => x[0].toUpperCase() + x.slice(1).toLowerCase();
const toPascalCase2 = (str) => (
str.split(/\s|_/)
.filter(x => x)
.map(pascalWord)
.join('')
);
const tests = [
'hello',
'HELLO',
'hello_world',
'HELLO_WORLD',
'Hello World',
'HELLO__WORLD__',
'Hello World_',
].map(toPascalCase2).join('<br>');
document.write(tests);
Pourquoi .Filter (x => x) code>?
@Mikechamberlain Il filtre des chaînes vierges ['Hello', '', 'World']. Filtre (x => x) = ["Bonjour '," World "] code>. Il y a probablement une meilleure façon de le faire, mais c'est la façon la plus fonctionnelle que je puisse penser.
Puis dans la carte code> vous n'avez pas à vous soucier des cordes vides
Ah, Gotha. Yeah Filtre prend un prédicat, voilà ici Cofferes x code> à un booléen, qui est false code> pour cordes vierges. Peut-être que !! x code> serait plus idiomatique?
@Mikechamberlain Voici quelques façons de nouveauté de faire le filtre code>: Stackoverflow.com/a/2843625/327074
var city = city.replace (/ \ s + / g, '') // remplacer tous les espaces à un seul espace ville = ville.replace (/ \ b \ w / g, ville => city .Touppercase ())) // après la lettre de Speace Convertir Capital P>
Bienvenue pour! Bien que cela puisse répondre à la question, cela pourrait être plus utile si vous l'amélioriez un peu. Veuillez prendre le temps de vérifier le Aide au formatage et envisagez d'ajouter des informations sur ce que votre code fait
@tvanfosson: Vous pouvez éditer si quelque chose est faux. Merci
fait, et maintenant je vais supprimer mon commentaire car cela n'a plus de sens.