Используйте положительный взгляд, чтобы найти -
, следующий за числом:
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));
}