Naik - s blog - Правилно разделяне на низа с функция за разделяне (Java)

Често, когато анализираме данните, разделяме низа по разделител. Един от начините е да се използва функцията разделяне (регулярно изражение), където регулярният израз е регулярен израз. Разделете следния ред на парчета:

Много често вертикалната линия е разделителят. |, от във функция разделен приема регулярен израз и символа | (pipe) се използва в регулярни изрази, за да се посочи условието "или", след което този знак трябва да бъде екраниран. Можете да разделите низа със следния код:

На пръв поглед изглежда, че всичко ще работи без проблеми. Може би ще е така, но да предположим, че попадате на ред, в който разделителят е в края на реда:

Ако прекъснете този ред:

Можете да очаквате масив от три елемента във вашия код: "Java World", "0123456", ".
Но масивът ще съдържа два елемента: "Java World", "0123456", тъй като разделителят в края на реда се игнорира.
За да не бъде игнориран последният разделител, трябва да въведете функцията разделен, преминават като втори параметър -един.
Имайте разделен има още един подпис като: split (regex, limit), където параметърът граница означава максимален брой елементи в получения масив. Примери за използване:

"Java World | 0123456 |" .split ("\\ |", 1) // ще върне един ред, игнорирайки разделителите: "Java World | 0123456 |"

"Java World | 0123456 |" .split ("\\ |", 2) // ще върне два реда, игнорирайки всички разделители с изключение на първия: "Java World", "0123456 |"

"Java World | 0123456 |" .split ("\\ |", 5) // ще върне три реда - максимално възможното разделяне на редове, // въпреки че се опитахме да разделим реда на 5 части: "Java World", " 0123456 "," "

Всъщност методът разделяне (регулярно изражение) причини разделяне (регулярно изражение, 0), тези. лимитът е 0, и функцията се държи, както е описано в началото на статията.
Ако предадете граничния параметър, равен на -1 (или произволно отрицателно число), тогава разделителят в края на реда не се игнорира:

"Java World | 0123456 |" .split ("\\ |", - 1) // ще върне три низа: "Java World", "0123456" и "

Заключение:
На практика често се налага да използвате разделяне (регулярно изражение), но не забравяйте за разделяне (регулярно изражение, -1).
Що се отнася до употребата разделяне (регулярно изражение, лимит) в граница> 0, тогава нямам идея къде може да ми е от полза и мисля, че се използва много рядко.