2012-05-24 3 views
0

J'ai un fichier texte qui contient des informations formées de façon key = value. Comment puis-je rechercher la clé et renvoyer la valeur.Renvoyer une ligne dans un fichier texte contenant une chaîne

Par exemple, supposons que le fichier a:

KeyOne=ValueOne 
KeyTwo=ValueTwo 

et je voudrais avoir une méthode qui prend KEYONE et retourne PremièreValeur.

+2

Avez-vous essayé avant de poster quoi que ce soit ici? – Blender

+0

Regardez vers les fichiers de propriétés de Java. Il semble que vos fichiers de valeurs-clés leur ressemblent. http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html –

Répondre

1

D'accord, je suis dans une bonne humeur :), non testé:

//given that 'input' got the contents of the file 

Map<String,String> m = new HashMap<String,String>(); 

//this can be done more efficient probably but anyway 
//normalize all types of line breaks to '\n' 
input = input.replaceAll("\r\n","\n"); 
input = input.replaceAll("\r","\n"); 


//populate map 
String[] lines = input.split("\n"); 
for(int i=0 ; i< lines.length; i++){ 
    String[] nv = lines[i].split("="); 
    m.put(nv[0],nv[1]); 
} 

//get value given key: 
String key = "somekey"; 
String someValue = m.get(key); 
System.out.println(someValue); 
1
Scanner s = new Scanner("Filename"); 
Map<String, String> m = new HashMap<String, String>(); 
while(s.hasNext()){ 
    String line[] = s.nextLine().split("="); 
    m.put(line[0], line[1]); 
} 

Pour obtenir la valeur:

m.get(ValueOne); 
-1

tas de façons. Vous pouvez

a. Lire le fichier une fois ligne par ligne, diviser l'entrée et remplir une carte

b. Appliquer une recherche d'expression regex au fichier dans son ensemble

c. Vous pouvez indexer un texte complet rechercher la chose

Tout dépend de votre cas d'utilisation. Difficile de recommander une approche sans comprendre le contexte.

Questions connexes