J'ai une chaîne comme "key1:value1|prop:id|key3:value3|id:ABC.CDE|key4:value4"
, comment puis-je diviser en utilisant Splitter.MapSplitter from Guava jusqu'à la clé d'identification?Comment séparer une chaîne en utilisant Splitter.MapSplitter de Guava jusqu'à une clé spécifique?
Splitter.MapSplitter.on('|').withKeyValuePairs(':").split()
retourne une carte non modifiable, donc je dois marcher à travers la carte jusqu'à ce que la clé d'identification et mettre les entrées dans une nouvelle carte dans ce cas. Cela ne semble pas une solution efficace.String.substring(0, String.indexOf('|', String.indexOf("id")))
n'est pas une option car la chaîne "id" peut être une sous-chaîne de toute valeur avant la clé id.- Ou je peux utiliser deux splitter, entrySplitter pour diviser la chaîne en entrées et keyValueSplitter pour diviser les entrées en paires clé-valeur, puis les mettre dans une carte tant que la clé spécifique n'a pas été atteinte.
Quelle est la meilleure solution?
Que voulez-vous dire par "jusqu'à ce que la clé"? Voulez-vous dire que vous voulez conserver toutes les paires clé-valeur avant "id" et jeter le reste? –
Oui. Je veux obtenir le mappage suivant de String au-dessus de la manière la plus efficace: key1 à value1 et prop à id et key3 à value3 et id à ABC.CDE – AggregateException