La méthode ne doit autoriser que " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ - CODE>" Chars dans les chaînes d'Uri. P>
Quelle est la meilleure façon de faire de la belle chaîne de SEO URI? h3>
3 Réponses :
La regex suivante fera la même chose que votre algorithme. Je ne suis pas au courant des bibliothèques pour faire ce type de chose.
String s = input .replaceAll(" ?- ?","-") // remove spaces around hyphens .replaceAll("[ ']","-") // turn spaces and quotes into hyphens .replaceAll("[^0-9a-zA-Z-]",""); // remove everything not in our allowed char set
C'est ce que le consensus général est:
minuscule la chaîne. P>
public static String toPrettyURL(String string) { return Normalizer.normalize(string.toLowerCase(), Form.NFD) .replaceAll("\\p{InCombiningDiacriticalMarks}+", "") .replaceAll("[^\\p{Alnum}]+", "-"); }
Normaliser Tous les personnages et se débarrasser de tous les Diacritical Marks (de sorte que, par exemple, ö, ã¶, devient E, O, A). P>
string = string.replaceAll("[^\\p{Alnum}]+", "-");
- code> et effondrer si nécessaire. P>
string = Normalizer.normalize(string, Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
Recommandez également la suppression de la ponctuation de premier plan et de suivi. // Supprimer la ponctuation de fuite .ReplaceAll ("[^ A-Z0-9] + $", "") // Supprimer la ponctuation principale .ReplaceAll ("^ [^ A-Z0-9] +", "");
Ceux-ci sont communément appelés "Slugs" si vous souhaitez rechercher plus d'informations. P>
Vous voudrez peut-être consulter d'autres réponses telles que Comment créer une URL de Dash SEO conviviale à partir d'une chaîne? et Comment faire fonctionner correctement le travail de Django Slugify avec des chaînes Unicode? P>
Ils couvrent le C # et Python plus que JavaScript mais ont une discussion sur la langue-agnostique sur les conventions de limites et les problèmes que vous pouvez faire face lorsque vous les faisant (comme unicité, problèmes de normalisation unicode, etc.). P>
Cela ressemble à une idée terrible. Considérez encoder l'URL à la place.
@Marcog: Cela ressemble beaucoup à ce que cela permet de générer des URL respectueuses de l'environnement de titres. Je serais très tenté de simplement remplacer toutes les séquences de charcuterie non alnum avec un seul trait d'union; même effet général (si peut-être légèrement différent dans des cas de bord), mais plus facile à comprendre.
@Donal Oh, à droite. Vous généreriez sûrement une chaîne aléatoire de l'ensemble des caractères autorisés cependant?
@marcog: Quoi, c'est que la partie (qui n'a pas d'importance i>) à la fin de l'URL; Le fragment de chemin avant est un identifiant qui est ce qui localise la question. Il est prudent d'utiliser la saisie de l'utilisateur pour cela car la désinfection est définie en termes d'une grave blancheur de caractères. (Chaîne aléatoire? Où est-ce venu?)
@Donal d'accord, je vois ce que vous parlez de. Je pensais que vous vouliez dire l'identifiant, par exemple 4581025 Pour cette question. Merci de clarifier!