Как может разделить строку, которая содержит только разделитель?

Когда приложение обменивается данными с серверами, используя сетевой трафик в виде открытого текста, например HTTP, это может повысить риск подслушивания и фальсификации контента. Третьи лица могут вводить несанкционированные данные или передавать информацию о пользователях. Вот почему разработчикам рекомендуется защищать только трафик, такой как HTTPS.

Попробуйте это решение: https://stackoverflow.com/a/54918763/6676310

16
задан Community 23 May 2017 в 12:08
поделиться

5 ответов

Alnitak is correct that trailing empty strings will be discarded by default.

If you want to have trailing empty strings, you should use split(String, int) and pass a negative number as the limit parameter.

The limit parameter controls the number of times the шаблон применяется и, следовательно, влияет на длину результирующего массив. Если предел n больше нуля, то шаблон будет применяться самое большее n - 1 раз, массив длина будет не больше n , а последняя запись массива будет содержать все входные данные за последним согласованным разделителем. Если n не является положительным, то шаблон будет применяться столько раз, сколько возможно, и массив может иметь любую длину. Если n равно нулю, то шаблон будет применяться столько раз, сколько возможно, массив может have any length, and trailing empty strings will be discarded.

Note that split(aString) is a synonym for split(aString, 0):

This method works as if by invoking the two-argument split method with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.

Also, you should use a loop to get the values from the array; this avoids a possible ArrayIndexOutOfBoundsException.

So your corrected code should be (assuming you want the trailing empty strings):

String sample = "::";
String[] splitTime = sample.split(":", -1);
for (int i = 0; i < splitTime.length; i++) {
    System.out.println("Value " + i + " : \"" + splitTime[i] + "\"");
}

Output:

Value 0 : ""
Value 1 : ""
Value 2 : ""
25
ответ дан 30 November 2019 в 17:53
поделиться

Из руководства по API J2SE :

Trailing поэтому пустые строки не включаются в результирующий массив.

Итак, если вы передадите в « :: « вы »

4
ответ дан 30 November 2019 в 17:53
поделиться

Like this perhaps?

int ndx = 0;
StringTokenizer t = new StringTokenizer(": : ::::",":");
while (t.hasMoreElements())
{
    System.out.println(String.format("Value %d : %s", ++ndx,t.nextElement()));
}
1
ответ дан 30 November 2019 в 17:53
поделиться

вы должны проверить длину массива splitTime.

0
ответ дан 30 November 2019 в 17:53
поделиться

Используйте функцию StringTokenizer, в которой вы передаете строку и второй аргумент в качестве разделителя

, используйте функцию splittime.length для найти длину

0
ответ дан 30 November 2019 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: