2016-12-06 12 views
0

ちょっと、私はtxtファイルを持っています。 ファイル:特定の文字列をJavaのtxtファイルから取得します。

This Ticket Being Generated as You Confirm 

Name : John 

Movie : Batman 

Location: MidVally 

Time : 7PM-9PM 

Time : 2 

Seats : [A-4, B-3, D-5, C-1, D-2, E-3] 

UniqueID: Batman7PM-9PMMidVally 

私はこの場合のみ文字列UniqID =「Batman7PM-9PMMidVally」にあるように、文字列でそれを保存するために一意IDを取得したいです。どのようにそれを達成するためのアイデア

+0

これまでに何を試しましたか?文字列を行単位で読み込むことは、始めるべきです。 – Jelle

答えて

2
public FileReader fr = new FileReader("path/to/your/file"); 
public BufferedReader br = new BufferedReader(fr); 
String unique; 
String line; 
while((line = br.readLine()) != null){ 
    if (line.contains("UniqueID")) 
    { 
     unique = line.split(":")[1].trim(); 
     break; 
    } 
} 

ファイルが常に同じ構造を持っている場合。

+0

です。これは機能しません。フォーマットは常に同じです – MrRizk

+0

ループに入れるのを忘れてしまいました。編集されました。 – MNEkin

0

これはあなたが確認すると生成されるこのチケットを除くjsonのような構造です。そのテキストをjsonに変換し、次にキーと値のペアとして取得しようとします。

+0

は、前にjsonと協力していませんでした – MrRizk

1
import java.nio.charset.StandardCharsets; 
import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.util.HashMap; 
import java.util.stream.Stream; 


public class TestClass { 


    private static final String FILE_PATH = "YOUR-FILE-PATH"; 

    public static void main(String... a) { 

     String uniqID = ""; 


     uniqID = getValueFromFile(FILE_PATH, "UniqueID"); 

     System.out.println("String UniqID = \"" + uniqID + "\""); 

    } 

    private static String getValueFromFile(String filePath, String id) { 

     HashMap<String, String> map= readFile(filePath); 
     String value=searchMap(map,id); 

     return value; 


    } 

    private static String searchMap(HashMap<String,String> map,String id) { 


     try { 

      if(map.containsKey(id))return map.get(id); 

     } 
     catch (Exception e){ 
      e.printStackTrace(); 

     } 
     return "Not Found"; 

    } 

    private static HashMap readFile(String filePath) { 
     HashMap<String, String> map = new HashMap<>(); 
     try { 

      try (Stream<String> lines = Files.lines(Paths.get(filePath), StandardCharsets.UTF_8)) { 
       for (String line : (Iterable<String>) lines::iterator) { 
        String[] lineValues = line.split(":"); 
        if (lineValues.length == 2) 
         map.put(lineValues[0].trim(), lineValues[1].trim()); 
       } 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return map; 
    } 

} 
+0

解決方法を教えてください。 –

+0

**ファイルの読み込み方法**ファイルを1行ずつ読み込み、配列に分割する –

+0

キーに**最初の値**をidにマップを追加** 2番目のキー**をマップに値として追加 ** 2番目のメソッド-search map **マップ内に見つかった場合、指定されたキーを検索します。戻り値は –

関連する問題