/ / Java rozdelenie správania JavaScriptu - javascript, java, split

Správanie Java vs. JavaScript - javascript, java, split

Zdá sa, že rozdelená funkcionalita sa líši medzi Java a JavaScript.

Nepotrebujem presne zodpovedať určitému pravidelnémuvýrazové kritériá alebo použitie regulárny výraz založený na hľadáčiku. Môj problém spočíva v tom, že sa po konečnom priradení rozdeleného regulárneho výrazu sledujú prázdne zhody (čo je jednoduchá množina znakov, nie výraz).

Nižšie je uvedený príklad výstupu, ktorý sa snažím dosiahnuť a čo skutočne dostávam.

Jáva

("~#~~#~~#~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", "", "", ""]

Naozaj to nemôžem dať za dobré vysvetlenie, pretože pracujem s Java aplikáciou a rozdelenie mi spôsobuje problémy, chcem rovnaký výsledok ako v JavaScripte. Ako to môžem získať?

odpovede:

30 pre odpoveď č. 1

Javadoc dňa split(String regex):

Táto metóda funguje, ako keby vyvolala metódu rozdelenia dvoch argumentov s daným výrazom a argumentom limitu nula. Koncové prázdne reťazce preto nie sú zahrnuté vo výslednom poli.

Javadoc dňa split(String regex, int limit):

Ak n nie je kladné, potom bude vzorecaplikovať toľkokrát, koľkokrát je to možné a pole môže mať akúkoľvek dĺžku. Ak je n nula, vzor sa aplikuje toľkokrát, koľkokrát je to možné, pole môže mať akúkoľvek dĺžku a koncové prázdne reťazce sa zahodia.

Takže ... split("~#~", -1) by mal urobiť trik.


7 pre odpoveď č. 2

Dokumentácia Java k split () jasne uvádza, že koncové prázdne reťazce NIE budú zahrnuté.

Táto metóda funguje ako pri vyvolaní metódy rozdelenia dvoch argumentov pomocou daný výraz a hraničný argument nula. Trailing prázdne reťazce nie sú preto zahrnuté do výsledného poľa.

ale môžete to dosiahnuť

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

čo je preťažená metóda


1 pre odpoveď č. 3

Java "s split() dokumentácia jasne uvádza, že koncové prázdne reťazce budú NOT byť zahrnuté.

Táto metóda funguje, akoby vyvolala metódu split s dvoma argumentmi pomocou daný výraz a limitný argument nula. Koniec prázdny reťazce preto nie sú zahrnuté vo výslednom poli.