2012-07-30 4 views
0

J'ai une liste avec environ 700 articles que je dois éditer avant de les ajouter à ma page Web. J'ai essayé d'éditer chaque élément manuellement mais il est devenu trop étendu, et j'ai pensé que je pourrais utiliser Java à la place pour lire et éditer le fichier puisque les mots qui doivent être modifiés ont le même début et fin dans chaque élément.Java comment lire et supprimer le contenu d'un fichier.

J'ai pensé que je commencerais par boucler le mot dans Q, le sauvegarder et quand j'avais la logique de travail, je trouverais comment lire le fichier texte et refaireais la même chose. (Je suis ouvert pour des suggestions s'il y a un autre moyen) Voici le code que j'ai mis ensemble jusqu'à maintenant. Il y a longtemps, j'ai codé en Java, donc je n'ai pratiquement aucune compétence en ce moment. Je ne suis pas sûr de ce que je fais mal, mais le mot que j'ai entré ne fonctionne pas logiquement. Il y a deux mots que je veux supprimer de ce fichier texte: OUI et NON, à la fois en majuscules et en minuscules.

+1

Comme @Christian a dit, un personnage ne peut pas être en même temps égal à « y » et « e » et 'de tout en même temps. Un personnage n'a qu'une seule valeur à un moment donné. Cependant, pourquoi ne pas essayer d'utiliser la méthode equalsIgnoreCase() dans la classe String. – crowne

Répondre

5

Votre code ne peut pas être droit:

if(Ord.charAt(i) == 'y' && Ord.charAt(i) == 'e' && Ord.charAt(i) == 's') 

se toujours être faux

Solution:

Ord.toLower().contains("yes") 

Ou (pire, mais toujours correct dans votre Cas):

if(Ord.charAt(i) == 'y' && Ord.charAt(i+1) == 'e' && Ord.charAt(i+2) == 's') 

Si vous êtes à la recherche de l'égalité, vous pouvez utiliser equals()

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#contains(java.lang.CharSequence)

+0

comment devrait-il être? veuillez faire afficher – user1535882

+0

a changé mon code: Cherchez-vous des chaînes eqal, ou recherchez-vous une sous-chaîne? –

1

Votre if test:

if(Ord.charAt(i) == 'y' && Ord.charAt(i) == 'e' && Ord.charAt(i) == 's') 

ne sera plus jamais vrai. Vous spécifiez que le même personnage doit être trois choses différentes.

Loot à la méthode String.equalsIgnoreCase pour une meilleure façon de tester les mots que vous voulez.

Par exemple:

if (word.equalsIgnoreCase("yes") || word.equalsIgnoreCase("no")) 
    // do something with word 
+0

En d'autres termes, je suis en train d'écraser Ord avec un nouveau personnage à chaque fois? – user1535882

+0

ne pas écraser du tout, juste tester le même endroit pour 3 valeurs char différentes et en utilisant '&&': il ne peut être qu'un de ceux-ci, pas tous les trois – pb2q

+0

Okey merci. Vous savez lire un fichier avec cette condition? Et supprime le mot à chaque point où il se trouve! – user1535882

0

Hope this helps, j'ai essayé de commenter chaque partie de vous donner une idée de ce que fait chaque ligne. Cela ne fonctionne que si le "oui" et le "non" sont sur leurs propres lignes séparées.

Voici le lien Tutoriels Java pour les E/S. Je recommande la lecture quand vous avez le temps, beaucoup de bonnes infos Java I/O Tutorial

import java.io.*; 
import java.util.ArrayList; 
public class test { 

    public static void main(String[] args) throws Exception { 
    //name of file to read 
    File file = new File("filename.txt"); 

    //BufferedReader allows you to read a file one line at a time 
    BufferedReader in = new BufferedReader(new FileReader(file)); 

    //temporary Array for storing each line in the file 
    ArrayList<String> fileLines = new ArrayList<String>(); 

    //iterate over each line in file, and add to fileLines ArrayList 
    String temp=null; 
    while((temp=in.readLine())!=null){ 
     fileLines.add(temp);   
    } 
    //close the fileReader 
    in.close(); 

    //open the file again for writing(deletes the original file) 
    BufferedWriter out = new BufferedWriter(new FileWriter(file)); 

    //iterate over fileLines, storing each entry in a String called "line" 
    //if line is equal to "yes" or "no", do nothing. 
    //otherwise write that line the the file 
    for(String line : fileLines){ 
     if(line.equalsIgnoreCase("yes")||line.equalsIgnoreCase("no")){ 
      continue;//skips to next entry in fileLines 
     } 
     //writes line, if the line wasn't skipped 
     out.write(line); 
     out.write(System.getProperty("line.separator")); //newline 
    } 
    //save the new file 
    out.close(); 

    } 

} 
Questions connexes