/ / Java срещу JavaScript разделено поведение - javascript, java, split

Java срещу JavaScript разделяне поведение - javascript, java, разделяне

Функцията за разделяне изглежда различна между Java и JavaScript.

Наистина не трябва да отговарям на определен редовенкритерии за изразяване или използване Поглед към главата въз основа на regex. Проблемът ми е с празните съвпадения, които се привързват след окончателното съвпадение на разделения regex (който е прост набор от характер, а не израз).

По-долу е даден пример за продукцията, която се опитвам да постигна и какво наистина получавам.

Ява

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

Аз наистина не мога да сложа ръцете си на добро обяснение за това, тъй като работя с Java приложение и разделянето ме причинява неприятности, искам същия резултат като в JavaScript. Как мога да получа това?

Отговори:

30 за отговор № 1

Javadoc на split(String regex):

Този метод работи така, сякаш чрез извикване на метода на разделяне с два аргумента с дадения израз и аргумент с нула. Следователно крайните празни низове не са включени в получения масив.

Javadoc на split(String regex, int limit):

Ако n е не-положителен, тогава моделът ще бъдеприлага се колкото е възможно повече пъти и масивът може да има всякаква дължина. Ако n е нула, тогава шаблонът ще бъде приложен колкото е възможно повече пъти, масивът може да има всякаква дължина, а приключващите празни низове ще бъдат отхвърлени.

Така... split("~#~", -1) трябва да направи този трик.


7 за отговор № 2

Документацията за разделяне на Java () ясно споменава, че празните низове няма да бъдат включени.

Този метод работи като ако се позове на метода за разделяне на два аргумента с даден израз и ограничение на нула. Продължава празен следователно низовете не са включени в получения масив.

но можете да го постигнете

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

което е претоварен метод


1 за отговор № 3

Java "S split() Документацията ясно споменава, че ще изминат празните низове НЕ да бъдат включени.

Този метод работи така, сякаш чрез извикване на метода на разделяне с два аргумента даден израз и аргумент с нула. Изминаването е празно Поради това низовете не са включени в получения масив.