Avatar billede tille Nybegynder
19. april 2006 - 19:56 Der er 10 kommentarer og
1 løsning

søge i array af tekster

Hej

Jeg er helt på bar bund her.

Jeg har arvet en opgave i et værktøj der kan 'styres' via et sdk

dette skal foregå med java.

jeg skal sende nogle pdf filer der er vedhæftet en mail

det har jeg fået til at virke via nogle eksempler fundet rundt omkring.

for ikke at få det totalt hardkodet, ville jeg så lave nogle lister med modtagere af pdf erne afhængig af filnavnet.

jeg har ingen mulighed for at lave jdbc mod noget som helst

altså jeg kommer med et filnavn, f.eks. '12207' med det vil jeg så slå op i et array af og får et array af modtagere tilbage
herunder er kaldet til post mail og det er så arrayet emails jeg vil finde for hvert enkelt filnavn.

sådan ser det ud i dag
... ...
String emails[] = this.setEmails();
this.postMail(emails, fileName, from, savePath, fullFileName );
System.out.println(fileName +" gemt og sendt til modtagere" );
... ...
public String[] setEmails()
{
    return new String[] {"ext_petil","pti@dak.net"};
}

ovennævnte betyder at alle filler sendes til de to email adresser

nu vil jeg så have at man i setMails() angav filnavn som parameter og så slog den op og fandt dem (kan godt være mere end een), der havde det samme filnavn ud for sig

altså noget med at den ser sådan her ud

12207, ext_petil
12234, dadsf@qwef.dk
12234, ext_petil
etc

Min java er deog alt for rusten til at jeg kan få det til at fungere

er der nogen af jer der kan lave en sådan metode ??
Avatar billede nielle Nybegynder
19. april 2006 - 21:15 #1
Jeg vil starte med at foreslå at du omdøber din setEmails() til at hedde getEmails() - det er mere stilrent.

Men ellers kunne en mulig løsning se sådan her ud:

    public String[] getEmails(String fileName) {
        ArrayList<String> opslagsListe = new ArrayList<String>();
        opslagsListe.add("12207, ext_petil");
        opslagsListe.add("12234, dadsf@qwef.dk");
        opslagsListe.add("12234, ext_petil");

        fileName += ", ";

        ArrayList<String> resultatListe = new ArrayList<String>();
        for (String linje : opslagsListe) {
            if (linje.startsWith(fileName)) {
                resultatListe.add(linje.replace(fileName, ""));
            }
        }

        String[] result = new String[resultatListe.size()];
        resultatListe.toArray(result);
        return result;
    }
Avatar billede tille Nybegynder
19. april 2006 - 21:46 #2
ser ud som noget der kan bruges, men hvad er det for nogle '<' og '>' der sidder rundt String ?
Avatar billede nielle Nybegynder
19. april 2006 - 21:59 #3
De høre sammen med det ArrayList som står foran:

ArrayList<String>

- og hele konstrultionen skal læses som "Et ArrayList af String's".
Avatar billede tille Nybegynder
19. april 2006 - 22:05 #4
OK, det vil bare ikke kompilere

BurstAndMailReport2.java:148: '(' or '[' expected
        ArrayList<String> opslagsListe = new ArrayList<String>();
                                                      ^
BurstAndMailReport2.java:155: '(' or '[' expected
        ArrayList<String> resultatListe = new ArrayList<String>();
                                                      ^
BurstAndMailReport2.java:156: ';' expected
        for (String linje : opslagsListe) {
                          ^
BurstAndMailReport2.java:164: illegal start of expression
        return result;
        ^
BurstAndMailReport2.java:164: ')' expected
        return result;
                    ^
5 errors



hvad med den her: 

    for (String linje : opslagsListe) {
Avatar billede tille Nybegynder
19. april 2006 - 22:09 #5
min java version er 1.4.2 jeg synes jeg kan læse mig til at det er noget der er kommet i 1.5.0 (altså det med ArrayList<String> resultatListe =
Avatar billede tille Nybegynder
19. april 2006 - 22:10 #6
skal jeg bruge en iterator for at loope igennem ?
Avatar billede nielle Nybegynder
19. april 2006 - 22:20 #7
ArrayList<String> er ganske rigtigt 1.5 (kaldes for gernerics). Jeg syens da faktisk at du burde overvejde at opgradere til 1.5 - af mange grunde. Men jeg vil da gerne lave en version uden generics til dig. Øjeblik...
Avatar billede nielle Nybegynder
19. april 2006 - 22:25 #8
Essensielt samme kode:

    public String[] getEmails(String fileName) {
        ArrayList opslagsListe = new ArrayList();
        opslagsListe.add("12207, ext_petil");
        opslagsListe.add("12234, dadsf@qwef.dk");
        opslagsListe.add("12234, ext_petil");

        fileName += ", ";

        ArrayList resultatListe = new ArrayList();
        for (int idx = 0; idx < opslagsListe.size(); idx++) {
            String linje = (String) opslagsListe.get(idx);
            if (linje.startsWith(fileName)) {
                resultatListe.add(linje.replace(fileName, ""));
            }
        }

        String[] result = new String[resultatListe.size()];
        resultatListe.toArray(result);
        return result;
    }
Avatar billede tille Nybegynder
19. april 2006 - 22:32 #9
Super det var lige hvad der skulle til, bortset fra at

resultatListe.add(linje.replace(fileName, ""));

skal være

resultatListe.add(linje.replaceAll(fileName, ""));

da replace kun tager een af gangen

så burde jeg selv kunne finde ud af at fylde arrayet uden for metoden  så det kun gøres een gang og via en fil, så slipper jeg for at rekompilere ved nye mail modtagere

lav lige et svar så du kan få point
Avatar billede nielle Nybegynder
19. april 2006 - 22:42 #10
Nu står der vel kun sådan noget som "12207" én gang i strengen "12207, ext_petil", så replace() er da vel ok at bruge...

Svar :^)
Avatar billede tille Nybegynder
19. april 2006 - 23:26 #11
<<Nu står der vel kun sådan noget som "12207" én
<<gang i strengen "12207, ext_petil", så replace()
<<er da vel ok at bruge...

Ikke i min version, der er parametrene til replace( char, char) mens replaceAll( str, str)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester