Je sais que d'autres ont mentionné String.split
, mais ici, c'est une variante que seuls les rendements des deux jetons (la base et de l'extension):
String[] tokens = fileName.split("\\.(?=[^\\.]+$)");
Par exemple:
"test.cool.awesome.txt".split("\\.(?=[^\\.]+$)");
Rendements:
["test.cool.awesome", "txt"]
L'expression régulière raconte Java à split, sur toute la période est suivie par un certain nombre de non-périodes, suivie par la fin de l'entrée. Il n'y a qu'une seule période, qui correspond à cette définition (à savoir, la dernière période).
Techniquement parlant, cette technique est appelée" zéro-largeur d'anticipation positif.