Java 以破折号分隔

Java split by dash character

我正在尝试用连字符和字符拆分字符串,但不确定如何使用 Regex 进行拆分。字符串是这样的:

–u tom –p 12345 –h google.com

连字符和字符的位置和出现的数量是可以互换的。我希望它们回到数组中。这是我目前所拥有的:

Scanner reader = new Scanner(System.in);
String entireLine = reader.nextLine();
String[] array = entireLine.split("–", -1);

我想要的结果是:

–你汤姆

–p 12345

–h google.com

谢谢。

split 方法在其参数中采用正则表达式,因此您可以像这样使用 positive lookahead

String[] array = entireLine.split("(?=-)");

您在与您类似的问题中对此有很好的解释:How to split String with some separator but without removing that separator in Java?

我会使用以下内容:

String[] array = entireLine.split("\-", -1);
// or
String[] array = entireLine.split("\–", -1);

它会给你

你汤姆

p 12345

h google.com

试试这个:

String[] array = entireLine.split("(?<!^)(?=-)");

后面的负面观察将防止在行首拆分。

你可以试试这个:

String[] array = entireLine.split("-*(\s+)");