Je tiens à écrire une méthode qui convertit un nom lisible par l’homme du CamelCase.
Voici le scénario de test :
Je tiens à écrire une méthode qui convertit un nom lisible par l’homme du CamelCase.
Voici le scénario de test :
Cela fonctionne avec votre cas de tests:
static String splitCamelCase(String s) {
return s.replaceAll(
String.format("%s|%s|%s",
"(?<=[A-Z])(?=[A-Z][a-z])",
"(?<=[^A-Z])(?=[A-Z])",
"(?<=[A-Za-z])(?=[^A-Za-z])"
),
" "
);
}
Voici un harnais de test:
String[] tests = {
"lowercase", // [lowercase]
"Class", // [Class]
"MyClass", // [My Class]
"HTML", // [HTML]
"PDFLoader", // [PDF Loader]
"AString", // [A String]
"SimpleXMLParser", // [Simple XML Parser]
"GL11Version", // [GL 11 Version]
"99Bottles", // [99 Bottles]
"May5", // [May 5]
"BFG9000", // [BFG 9000]
};
for (String test : tests) {
System.out.println("[" + splitCamelCase(test) + "]");
}
Il utilise de longueur nulle mise en correspondance avec lookbehind et lookforward de trouver l'endroit où insérer des espaces. Fondamentalement, il existe 3 modèles, et je l'utilise String.format
pour les mettre ensemble pour le rendre plus lisible.
Les trois modèles sont:
XMLParser AString PDFLoader
/\ /\ /\
MyClass 99Bottles
/\ /\
GL11 May5 BFG9000
/\ /\ /\
À l'aide de longueur nulle correspondant lookarounds à split:
Si vous n’aimez de regex « compliqué » et ne sont pas du tout dérangé sur l’efficacité, alors que j’ai utilisé cet exemple pour obtenir le même effet en trois étapes.
Elle passe tous les cas de test ci-dessus, y compris ceux contenant des chiffres.
Comme je le dis, ce n’est pas aussi bon qu’en utilisant l’expression régulière un dans quelques autres exemples ici - mais quelqu'un pourrait bien s’avérer utile.
Vous pouvez utiliser org.modeshape.commun.texte.Inflecteur.
Plus précisément:
String humanize(String lowerCaseAndUnderscoredWords, String... removableTokens)
Met en majuscule la première parole souligne dans des espaces et des bandes de fuite "_id" et fourni amovible jetons.
Artefact Maven est: org.modeshape:modeshape-commune:2.3.0.Final
sur JBoss référentiel: https://repository.jboss.org/nexus/content/repositories/releases
Voici le fichier JAR: https://repository.jboss.org/nexus/content/repositories/releases/org/modeshape/modeshape-common/2.3.0.Final/modeshape-common-2.3.0.Final.jar
L’expression régulière suivante peut servir à identifier les capitales à l’intérieur des mots :
Il correspond à chaque lettre majuscule, qui est l’éther après un non-majuscule ou un chiffre ou suivis d’une minuscule et chaque chiffre après une lettre.
Comment insérer un espace devant eux est au-delà de mes compétences Java =)
Révisé pour inclure l’affaire chiffre et le chargeur de PDF.
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.