Bonjour Messieurs/Dames,
Je souhaiterais pouvoir régénérer une bonne casse (pour une meilleure lisibilité) sur un texte côté client (en javascript).
Mes données d'entrée peuvent être un texte (brut) tout en majuscule, comme un mixte des deux.
Pour cela, j'ai déjà créer une fonction :
Le résultat est pratiquement bon, sauf pour un cas, celui des listes non numériques comme celle-ci :
Les lignes telles que "a)test" deviendront "A)Test", la partie après la parenthèse est comme prévu, mais la lettre avant la parenthèse ne devrait pas changer de casse.
Je bataille dur sur cette Regex, mais je n'y arrive pas d'un seul coup, en effet, je suis obligé de faire 2 replace avec 2 Regex, mais je perds la casse d'origine.
Si vous ne trouvez pas non plus, mais avez une optimisation à amener, je suis tout autant preneur !
Par avance merci !
P.S: Le code est visible sur jsFiddle où l'on peut voir le résultat sur une chaîne de test.
Modifié par Super_baloo8 (15 Nov 2012 - 11:52)
Je souhaiterais pouvoir régénérer une bonne casse (pour une meilleure lisibilité) sur un texte côté client (en javascript).
Mes données d'entrée peuvent être un texte (brut) tout en majuscule, comme un mixte des deux.
Pour cela, j'ai déjà créer une fonction :
function restore_case(string)
{
string = string.toLowerCase();
string = string.charAt(0).toUpperCase()+string.slice(1);
string = string.replace(/((\.)|(\?)|(\!)|((((\n)|(\r))?[\w+]) ?((\))|(\-))+)|(\n)|(\r))+ ?([A-Z+])/gmi, function(a) { return a.toUpperCase(); });
return string;
}
Le résultat est pratiquement bon, sauf pour un cas, celui des listes non numériques comme celle-ci :
a)test
a) test
a ) test
A)TEST
A) TEST
A ) TEST
Les lignes telles que "a)test" deviendront "A)Test", la partie après la parenthèse est comme prévu, mais la lettre avant la parenthèse ne devrait pas changer de casse.
Je bataille dur sur cette Regex, mais je n'y arrive pas d'un seul coup, en effet, je suis obligé de faire 2 replace avec 2 Regex, mais je perds la casse d'origine.
//Regex pour mettre les majuscules au bon endroit
/((\.)|(\?)|(\!)|((((\n)|(\r))?[\w+]) ?((\))|(\-))+)|(\n)|(\r))+ ?([A-Z+])/gmi
//Regex pour corriger
/([A-Z]) ?(\)|\-)+/gmi
Si vous ne trouvez pas non plus, mais avez une optimisation à amener, je suis tout autant preneur !
Par avance merci !
P.S: Le code est visible sur jsFiddle où l'on peut voir le résultat sur une chaîne de test.
Modifié par Super_baloo8 (15 Nov 2012 - 11:52)