Ваш разделитель может быть"либо последовательностью пробелов, либо кусками не-w в начале строки, но это оставляет пустую строку в начале:
Arrays.toString("abc def ghi jkl".split("\\s+|^\\S+\\s+"))
производит
[,def,ghi]
Это проблема с split
- я думаю, вы всегда получите что-то в начале вашего массива. К сожалению, я думаю, вам нужно ударитьот начала строки до разделения, или используйте Java Arrays.copyOfRange()
или аналогичный для постобработки.
Удаление начала можно сделать с помощью replaceFirst
:
import java.util.Arrays;
public class SplitExample {
public static final String data = "abc def ghi";
public static void main(String[] args) {
System.out.println(Arrays.toString(data.split("\\s+")));
System.out.println(Arrays.toString(data.split("\\s+|^\\S+\\s+")));
System.out.println(Arrays.toString(data.replaceFirst("^\\S+\\s+", "").split("\\s+")));
}
}
Окончательный вариантСтрока настолько близка, насколько я могу получить, потому что split
производит совпадения ВОКРУГ ваших разделителей. Как вы можете избежать пустой строки спереди одним разделением? Я не уверен, что есть способ ....