Fractionner par: mais pas :: [dupliquer]

Sep 08 2020

Je me demandais comment je pourrais diviser une chaîne en n'utilisant :pas::String#split(String)

J'utilise Java si cela fait une différence.

J'ai beaucoup regardé autour de moi et je n'ai rien trouvé, et je ne connais pas Regex ...

Exemple:
coolKey:cool::valuedevrait revenir ["coolKey", "cool::value"]
cool::key:cool::valuedevrait retourner["cool::key", "cool::value"]

Réponses

TimBiegeleisen Sep 08 2020 at 06:37

Vous pouvez essayer de diviser sur (?<!:):(?!:):

String input = "cool::key:cool::value";
String[] parts = input.split("(?<!:):(?!:)");
System.out.println(Arrays.toString(parts));

Cela imprime:

[cool::key, cool::value]

Le regex utilisé ici dit de se séparer quand:

(?<!:)    the character which precedes is NOT colon
:         split on colon
(?!:)     which is also NOT followed by colon