Как разбить строку по разделителю? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть строка a="-4--5-6"
Когда я выполняю a.split("-") Результат равен {4,5,6}, но я хочу {4,-5,6}. какое регулярное выражение просить, чтобы получить ответ?

1 Ответ

1 голос
/ 21 октября 2019

Используйте положительный взгляд, чтобы найти -, следующий за числом:

a.split("(?<=\\d)-");

. (?<=u) - это положительный взгляд, где u представляет символы, которые используютсяпосмотрел назад, и \\d представляет любой числовой символ. Это будет искать -, который следует за числом, но не включает это число в захваченных символах, поэтому разделение не удаляет число, только - символ.

например,

import java.util.Arrays;

public class Foo {
    public static void main(String[]args) {
        String a = "-4--5-6";
        System.out.println(a);

        String[] b = a.split("(?<=\\d)-");
        System.out.println(Arrays.toString(b));
    }
}

Обратите внимание, что это вернет

[-4, -5, 6]

Так как первым 4 предшествует отрицательный знак

Для получения дополнительной информации, пожалуйста, прочитайте это руководство по регулярным выражениям


Для вашего примера, где String:

String a = "1-2--3-4";

Это вернет:

[1, 2, -3, 4]

Это именно то, что вы хотите

public static void main(String[]args) {
    String a = "1-2--3-4";
    System.out.println(a);

    String[] b = a.split("(?<=\\d)-");
    System.out.println(Arrays.toString(b));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...