2016-07-08 2 views
1

Expression..Splitting ich eine Textdatei mit state-Stadt Werte haben: - Dies sind die Inhalte in meiner Datei: -Regular ein String-Array zweimal

Madhya Pradesh-Bhopal 
Goa-Bicholim 
Andhra Pradesh-Guntur 

Ich möchte den Staat und die Stadt spalten ... Hier ist mein Code

FileInputStream fis= new FileInputStream("StateCityDetails.txt"); 
    BufferedInputStream bis = new BufferedInputStream(fis); 
    int h=0; 
    String s; 
    String[] str=null; 
    byte[] b= new byte[1024]; 
    while((h=bis.read(b))!=-1){ 
    s= new String(b,0,h); 
    str= s.split("-"); 
    } 
    for(int i=0; i<str.length;i++){ 
     System.out.println(str[1]); ------> the value at 1 is Bhopal Goa 
    } 
     } 

auch habe ich einen Raum zwischen Madhya Pradesh .. So will ich Räume in der Datei zwischen den Staaten entfernen und spaltete auch den Staat und die Stadt und erhalte dieses Ergebnis: -

 str[0]----> MadhyaPradesh 
    str[1]----> Bhopal 
    str[2]-----> Goa 
    str[3]----->Bicholim 

Bitte Help..Thank Sie im Voraus :)

+0

Was ist die Frage? Funktioniert dein Code nicht? Wenn nicht, was verstehst du nicht? –

+0

Der Code funktioniert gut Sir, aber das Ergebnis ist nicht wie erwartet ... Ich weiß nicht, wie Sie die erwartete Ausgabe erhalten .. –

Antwort

1

ich einen BufferedReader hier, anstatt die Art und Weise verwenden, würden Sie es tun. Das folgende Codefragment liest jede Zeile, unterteilt nach Bindestrich (-) und löscht alle Leerzeichen aus jedem Teil. Jede Komponente wird in eine Liste von links nach rechts (und von oben nach unten) eingegeben. Die Liste wird am Ende in ein Array konvertiert, falls Sie dies benötigen.

List<String> names = new ArrayList<String>(); 
BufferedReader br = null; 

try { 
    String currLine; 

    br = new BufferedReader(new FileReader("StateCityDetails.txt")); 

    while ((currLine = br.readLine()) != null) { 
     String[] parts = currLine.split("-"); 
     for (int i=0; i < parts.length; ++i) { 
      names.add(parts[i].replaceAll(" ", "")); 
     } 
    } 

} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    try { 
    if (br != null) br.close(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
} 

// convert the List to an array of String (if you require it) 
String[] nameArr = new String[names.size()]; 
nameArr = names.toArray(nameArr); 

// print out result 
for (String val : nameArr) { 
    System.out.println(val); 
} 
+0

Ausnahme im Thread "Haupt" java.lang.ArrayIndexOutOfBoundsException: 1 \t bei com.psl.Client .main (Client.java:31) names.add (Teile [1] .replaceAll ("", "")); <----- es tut das nicht .. gibt hier einen Fehler –

+0

@ Bhavana_1622 Können Sie sich Mühe geben, dies zu debuggen? Ich vermute, dass Ihre Eingabedatei einige Zeilen hat, die keinen Bindestrich haben. Ich habe Logik hinzugefügt, um solche Zeilen zu überspringen. –

+0

Danke .. ja, ich werde es versuchen ... :) thnx –