2012-10-27 3 views
0

Donc, je ne suis pas vraiment familier avec les méthodes java String et je ne suis pas sûr qu'il existe un moyen facile de le faire. J'ai une chaîne qui contient un couple de valeurs délimitées par ":" et chaque couple est séparé des autres par un autre délimiteur ",". Par exemple:Obtenir une certaine sous-chaîne entre deux délimiteurs différents en fonction d'une certaine condition dans Java

AA:BB,CC:DD,XX:YY,EE:FF 

La correspondance est "de" et "à" valeur. En fonction d'une condition, j'obtiens la valeur "from", prenons par exemple "XX", et je veux récupérer la valeur "to" dans ce cas "YY".

Je ne sais pas vraiment comment le faire. Toute aide serait appréciée.

Merci :)

Répondre

1

Vous pouvez convertir la chaîne en une carte:

String[] items = string.split(","); 
Map<String, String> map = new HashMap<String, String>(); 
for (String item : items) { 
    String[] split = item.split(":"); 
    map.put(split[0], split[1]); 
} 

Fondamentalement, vous divisez la chaîne deux fois. Tout d'abord, vous le divisez en paires clé-valeur individuelles en le divisant par split(","), puis bouclez toutes ces paires. Nous divisons chaque paire encore une fois, cette fois par les deux-points, puis stockons la valeur dans une carte de valeurs-clés qui mappe les clés de chaînes en valeurs de chaîne.

Vous pouvez ensuite lire une valeur de la carte comme ceci:

map.get(key); 

Par exemple, en utilisant votre exemple des données:

System.out.println(map.get("CC")); // prints "DD" 
+0

merci :) il fonctionne – wassim

1

Voici un exemple, comment vous pouvez le faire. J'utilise Integers dans mon exemple, mais vous pouvez le changer très facilement.

import java.util.ArrayList; 
import java.util.List; 

class Value { 
    int from; 
    int to; 
    Value(int from,int to){ 
     this.from = from; 
     this.to = to; 

    } 
    //getter && setter 
} 

public class Test { 
    public static void main(String[] args) { 
     String input = "12:13,11:12,12:12,134:413"; 
     String[] values = input.split(","); 
     List<Value> parsedValues = new ArrayList(); 
     for(String value:values){ 
      String[] split = value.split(":"); 
      parsedValues.add(new Value(new Integer(split[0]).intValue(),new Integer(split[1]).intValue())); 
     } 
    } 
} 
+0

merci :) de travail – wassim

Questions connexes