2016-11-08 3 views
0

J'ai un fichier html que je dois rechercher ligne par ligne et rechercher une chaîne particulière et ensuite prendre des mesures en conséquence. Le problème est que la chaîne correspond à la ligne entière de chaque ligne du fichier html. Donc, s'il y a des espaces avant la chaîne actuelle dans une ligne donnée, la correspondance s'avère être fausse, même si elle doit être positive.Comment négliger les espaces vides dans une recherche de chaîne dans un fichier html en utilisant java?

package read_txt; 

import java.io.*; 
class FileRead 
{ 
public static void main(String args[]) 
{ 
    try{ 
    // Open the file that is the first 
    // command line parameter 
    FileInputStream fstream = new FileInputStream("textfile.html"); 
    // Get the object of DataInputStream 
    DataInputStream in = new DataInputStream(fstream); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
    String strLine; 
    //Read File Line By Line 
    while ((strLine = br.readLine()) != null) { 
     // Print the content on the console 
     //String a = "media query"; 
     switch (strLine) { 
     case "@media query" : 
      System.out.println("media query found"); 
      System.out.println("html file responsive"); 
      break; 
     // default : 
      // System.out.println("html file unresponsive"); 
      //break; 
     } 
    } 
    //Close the input stream 
    in.close(); 
    }catch (Exception e){//Catch exception if any 
     System.err.println("Error: " + e.getMessage()); 
    } 
} 
} 

Dans mon code ci-dessus, je suis à la recherche d'une chaîne "requête média". Supposons maintenant que c'est le fichier html recherchée:

enter image description here

Les codes fonctionne très bien pour ce fichier html, mais supposons que nous avons maintenant ce fichier html:

enter image description here

Le match de chaîne ne ne fonctionne pas bien qu'une chaîne de requête média soit présente, mais si je change la chaîne correspondante en "media query" au lieu de "media query", cela fonctionne à nouveau. Toute idée comment puis-je ignorer l'espacement vide apparaissant avant l'apparition de n'importe quel texte dans une ligne?

+1

Jetez un oeil à la '' '' String'' de trim() '' méthode ... – f1sh

+0

Merci pour la suggestion. Va regarder dans –

Répondre

0

Dans ce cas, je pense que l'utilisation de "switch" n'est pas la bonne façon de procéder.

Vous pouvez utiliser

if (strLine.contains("media query")) 

mais échouera si la ligne a « requête média » (deux espaces au lieu d'un). Donc, votre meilleur pari pourrait être d'utiliser une expression régulière.

+0

Merci :) Oui, le seul problème est les espaces vides initiaux, la probabilité de fautes d'orthographe ou deux espaces entre «médias» et «requête» est très faible –

0

Vous pouvez utiliser des extrémités avec, par ex. Dans les cas où la chaîne recherchée pourrait se situer quelque part au milieu de la ligne, vous pouvez utiliser indexOf, par exemple:

if (strLine.indexOf("medial quera") >= 0) { ... 
+0

Merci Thomas, ce sera une aide précieuse , Je peux OU ces recherches ensemble pour avoir une correspondance infaillible! :) –