Я задавался вопросом, почему результат расщепления СтрокаJava Строка расколоть Вопросы
Foo: и: бух
с регулярным выражением
о
имеет пустое место в нем? поэтому выход выглядит так -
п «» и б
Может кто-то объяснить, почему «» здесь? благодаря!
Я задавался вопросом, почему результат расщепления СтрокаJava Строка расколоть Вопросы
Foo: и: бух
с регулярным выражением
о
имеет пустое место в нем? поэтому выход выглядит так -
п «» и б
Может кто-то объяснить, почему «» здесь? благодаря!
Может кто-нибудь объяснить, почему «" находится здесь?
Потому что нет ничего между o
и o
в foo
. Регулярное выражение o
разбивается на каждого человека o
в строке.
Если вы использовали o+
, то вы не имеете ""
, потому что вы хотите сказать, что "раскол на одном или болееo
с":
class Example
{
public static void main(String[] args)
{
String str = "foo:and:boo";
test("Results from using just \"o\":", str, "o");
test("Results from using \"o+\":", str, "o+");
}
private static void test(String label, String str, String rex)
{
String[] results = str.split(rex);
System.out.println(label);
for (String result : results) {
System.out.println("[" + result + "]");
}
}
}
Выход:
Results from using just "o": [f] [] [:and:b] Results from using "o+": [f] [:and:b]
Сплит на «о» будет разделен на каждый найденный «о»:
"ok" .split ("o");
Дайте результат:
Потому что индекс 0 соответствует вашему регулярному выражению «o». Но почему foo тоже не возвращается?
Документация раскола говорит:
Скользящий пустые строки, следовательно, не включаются в результирующую массива.
Средство для трейдинга в конце регулярного выражения. Если вы добавите что-то после «boo»: String source = "foo: and: boot"; Строка [] os = источник.сплит ("о");
System.out.println(String.format("Size of result is [%s]", os.length));
for (int i = 0; i < os.length; i++) {
System.out.println(i + " " + os[i]);
}
Выход будет:
Size of result is [5]
0 f
1
2 :and:b
3
4 t
Я думаю, вы можете понять это хорошо, если вы знаете, как индекс в регулярных выражениях работ.
Под рисунком копируется из here.
Как вы можете видеть, хотя «Foo» длина составляет всего 3 символов, начинают индекс 0 и индексный является 3.
Теперь, если вы говорите, разделить на «о» (только одно появление o), вы можете видеть, что между ячейками 1 (o) и cell2 (o) нет ничего, поэтому он дает пустую строку. Как упоминалось выше, если вы используете «o +» (одно или несколько вхождений буквы o) для разделения, вы не получите пустую строку. Надеюсь, я поняла.
Потому что между 'oo' нет символа. – SubOptimal