2014-07-11 15 views
6

http://www.tutorialspoint.com/java/java_string_split.htmJava - Split String() Metoda zero i ujemna granica

Oto składnia tej metody: public String[] split(String regex, int limit) lub public String[] split(String regex)

W powyższym linku, mogę zrozumieć przykłady Str.split("-", 2) i Str.split("-", 3). Jednak nie rezygnuję z uzyskania Str.split("-", 0), jaka jest rola zerowego limitu? W niektórych przykładach spotkałem się również z ujemnymi ograniczeniami, co to jest? Wielkie dzięki

+4

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String,%20int% 29 –

+0

Skopiowano, dla wygody: "fn nie jest dodatnie, a wzór będzie stosowany tyle razy, ile to możliwe, a tablica może mieć dowolną długość. Jeśli n wynosi zero, wzór będzie stosowany tyle razy, ile to możliwe, tablica może mieć dowolną długość, a końcowe ciągi puste będą odrzucane. " – laune

+0

@laune Tęskniłeś za poprzednim zdaniem! Nic w tym dziwnego, ponieważ * nie-pozytywny * nie jest ** oczywiście ** ujemny. * Jeśli n nie jest dodatnie, wzorzec będzie stosowany tyle razy, ile to możliwe, a tablica może mieć dowolną długość. Jeśli n wynosi zero, to wzór będzie stosowany tyle razy, ile to możliwe, tablica może mieć dowolną długość, a ciągi pustych ciągów będą odrzucane. * Tak więc, zero odrzuć puste rekordy, a ujemne je zachowuje! –

Odpowiedz

11

granica parametr określa ile razy wzór jest stosowana, a zatem wpływa na długość otrzymanego array. Mamy możliwe wartości w tym granicy:

  1. Jeśli ograniczenie n jest większa niż zera wówczas wzór będą stosowane w większości n - 1 czasach array's długość nie będzie większa niż n, a ostatni wpis array's będzie zawierać wszystkie dane wejściowe poza ostatnim dopasowanym separatorem.

  2. Jeśli n nie jest pozytywny, to próbka będzie stosowana tak często, jak to możliwe, a array może mieć dowolną długość.

  3. Jeśli n ma wartość zero, to próbka będzie stosowana tak często, jak jest to możliwe, array może mieć dowolną długość, i przemieszczania pustych łańcuchy zostaną odrzucone.

Możesz przeczytać więcej here.

+0

W n wynosi zero, będzie również usuwane wiodące puste ciągi? 0 :) zanim to przetestuję ... –

+0

@darkchampionz Wzorzec działa tylko na łańcuchu, w którym wykonywana jest metoda podzielona na. Nie będzie traktować ciągów przychodzących przed lub po *** Str *** – GingerHead

1

Str.split("-", 0) jest odpowiednikiem Str.split("-"). Np. Nie ma limitu.

6

Str.split("-",0) jest taka sama jak Str.split("-")