/ Comportement de la division / Java vs JavaScript - javascript, java, split

Comportement de division Java vs JavaScript - javascript, java, split

La fonctionnalité de scission semble être différente entre Java et JavaScript.

Je n'ai pas exactement besoin de faire correspondre un certain habituécritères d'expression, ou utilisation regex à base de look look Mon problème réside dans le fait que les correspondances vides sont suivies après la correspondance finale de la regex divisée (qui est un simple jeu de caractères et non une expression).

Vous trouverez ci-dessous un exemple du résultat que j'essaie d'obtenir et de ce que je reçois réellement.

Java

("~#~~#~~#~A~#~B~#~C~#~D~#~E~#~~#~~#~").split("~#~")

/* results with an array of length 8 */ (java.lang.String[]) [, , , A, B, C, D, E]

Javascript

 "~#~~#~~#~A~#~B~#~C~#~D~#~E~#~~#~~#~".split("~#~")
/* results with an array of length 11 */ ["", "", "", "A", "B", "C", "D", "E", "", "", ""]

Je ne peux vraiment pas mettre la main sur une bonne explication car je travaille avec une application Java et que la scission me pose problème, je veux le même résultat qu’en JavaScript. Comment puis-je obtenir cela?

Réponses:

30 pour la réponse № 1

Javadoc sur split(String regex):

Cette méthode fonctionne comme si elle invoquait la méthode de scission à deux arguments avec l'expression donnée et un argument limit égal à zéro. Les chaînes vides de fin ne sont donc pas incluses dans le tableau résultant.

Javadoc sur split(String regex, int limit):

Si n est non positif, le motif seraappliquée autant de fois que possible et le tableau peut avoir n'importe quelle longueur. Si n est égal à zéro, le modèle sera appliqué autant de fois que possible, le tableau peut avoir n'importe quelle longueur et les chaînes vides de fin seront ignorées.

Alors... split("~#~", -1) devrait faire le tour.


7 pour la réponse № 2

La documentation Java () de split () indique clairement que les chaînes vides de fin ne seront PAS incluses.

Cette méthode fonctionne comme si elle appelait la méthode split à deux arguments avec l'expression donnée et un argument limite de zéro. Trailing vide les chaînes ne sont donc pas incluses dans le tableau résultant.

mais vous pouvez y arriver en

("~#~~#~~#~A~#~B~#~C~#~D~#~E~#~~#~~#~").split("~#~" , -1)

qui est une méthode surchargée


1 pour la réponse № 3

Java "s split() la documentation mentionne clairement que les dernières chaînes vides NE PAS être compris.

Cette méthode fonctionne comme si elle appelait la méthode split en deux arguments avec l'expression donnée et un argument limite de zéro. Trailing vide les chaînes ne sont donc pas incluses dans le tableau résultant.