Existe-t-il un moyen d'utiliser des chaînes de caractères brutes en Java (sans séquences d'échappement) ?
(J'écris une bonne quantité de code regex et les chaînes brutes rendraient mon code immensément plus lisible).
Je comprends que le langage ne le prévoit pas directement, mais existe-t-il un moyen de les "simuler" de quelque manière que ce soit ?
5 votes
Oh, j'en ai tellement envie. Des chaînes de caractères à plusieurs lignes, aussi. Et peut-être une simple interpolation.
3 votes
Bien que vous n'aimiez pas cela, je pense que cela encourage simplement à mélanger vos données avec votre code. Ce qui est bien avec les REGEX, c'est qu'ils SONT des données et peuvent donc être extraits dans une sorte de table indexée, ce qui simplifie tout le reste de votre code. Les modifications apportées à vos informations ne nécessitent pas une recompilation, il suffit que votre client modifie vos fichiers sources REGEX. C'est vrai pour à peu près tout ce que je considère comme des chaînes de caractères à plusieurs lignes Toujours mieux externe (si rien d'autre, pensez i18n !)
0 votes
Ps. Quand j'étais jeune, un programmeur intelligent a théorisé que les seules constantes en ligne dans votre code devraient être 0 et 1, et que celles-ci ne devraient être utilisées que pour terminer une boucle ou pour comparer des situations qui ne sont plus valables (nous pouvons utiliser foreach au lieu de for(0..)). Je pensais qu'il était fou à l'époque, mais plus je m'améliore, plus cette théorie semble intelligente.
0 votes
Note (janvier 2018), les littéraux de chaîne bruts pourraient arriver pour Java (JDK 10 ou plus) : voir En Java, existe-t-il un moyen d'écrire une chaîne de caractères littérale sans devoir échapper aux guillemets ? .
0 votes
La situation a changé et aujourd'hui la réponse qui est marquée comme correcte est fausse. La réponse correcte est donnée par Vlad. A propos des blocs de texte. S'il vous plaît envisager le changement parce que cette décision confond les gens.
0 votes
@Myshkin Merci de m'avoir prévenu. J'ai mis à jour la réponse correcte à celle de Vlad.