Java разделяет строку на массив
Мне нужна помощь с помощью метода split()
.
У меня есть следующий String
:
String values = "0|0|0|1|||0|1|0|||";
Мне нужно поместить значения в массив. Возможны 3 строки: "0", "1" и ""
Моя проблема в том, что я пытаюсь использовать split()
:
String[] array = values.split("\\|");
Мои значения сохраняются только до последнего 0. Кажется, что часть "|||" обрезается.
Что я делаю неправильно?
спасибо
Ответы
Ответ 1
Это поведение явно описано в String.split(String regex)
(внимание мое):
Этот метод работает, как если бы он вызывал метод разделения с двумя аргументами с заданным выражением и предельным аргументом нулевого. Приводящие пустые строки, следовательно, не включены в результирующий массив.
Если вы хотите включить эти завершающие пустые строки, вам нужно использовать String.split(String regex, int limit)
с отрицательным значением для второго параметра (limit
):
String[] array = values.split("\\|", -1);
Ответ 2
Попробуйте это
String[] array = values.split("\\|",-1);
Ответ 3
Рассмотрим следующий пример:
public class StringSplit {
public static void main(String args[]) throws Exception{
String testString = "Real|How|To|||";
System.out.println
(java.util.Arrays.toString(testString.split("\\|")));
// output : [Real, How, To]
}
}
Результат не включает пустые строки между "|" разделитель. Чтобы сохранить пустые строки:
public class StringSplit {
public static void main(String args[]) throws Exception{
String testString = "Real|How|To|||";
System.out.println
(java.util.Arrays.toString(testString.split("\\|", -1)));
// output : [Real, How, To, , , ]
}
}
Для получения более подробной информации перейдите на этот сайт: http://www.rgagnon.com/javadetails/java-0438.html
Ответ 4
Ожидается.
Обратитесь к Javadocs для split
.
Splits this string around matches of the given regular expression.
Этот метод работает так, как если бы вы вызывали метод split (java.lang.String, int) с двумя аргументами с данным выражением и предельным аргументом нуля. Таким образом, конечные пустые строки не включаются в результирующий массив.