Gå til innhold

Anbefalte innlegg

Prøver å få til en metode for å sikre input fra brukere i JSP.

Jeg har funnet ut at om jeg erstatter "spesialtegnet" med "spesialtegnet" så sikrer det inputen, men jeg får det ikke helt til.

 

    
   public static String filtrer(String tekst) {
       if(tekst == null) return null;
       StringBuffer resultat = new StringBuffer(tekst);
       for(int i=0; i < tekst.length(); i++) {
           char tegn = tekst.charAt(i);
           if (!(Character.isLetterOrDigit(tegn))) {
               resultat.replace(i, i+1, ""+tegn);
           }
       }
       return resultat.toString();
   }

Endret av ZoRaC
Lenke til kommentar
Videoannonse
Annonse

Løste det:

    public static String filtrer(String tekst) {
       if(tekst == null) {
           return null;
       }
       final StringBuffer buf = new StringBuffer();
       for (int i = 0; i < tekst.length(); i++) { 
           char tegn = tekst.charAt(i);
           if (Character.isLetterOrDigit(tegn)) {
               buf.append(tegn);
           }
           else {
               buf.append("" + (int) tegn);
           }
       }     
       return buf.toString();
   }

;)

Lenke til kommentar

Den var selvfølgelig ikke helt perfekt enda, nå sliter jeg med æ, ø og å, de blir nemlig ikke tolket som bokstaver, og det resulterer i rare tegn.

 

Jeg tenkte derfor å legge til en metode for unntak, men denne fungerer ikke helt.

 

public class InputFilter {
   private final static char[] unntak = { 'å', 'æ', 'ø', 'Å', 'Æ', 'Ø' };
   
   public static String filtrer(String tekst) {
       if (tekst == null) {
           return null;
       }
       final StringBuffer buf = new StringBuffer();
       for (int i = 0; i < tekst.length(); i++) { 
           char tegn = tekst.charAt(i);
           if (Character.isLetterOrDigit(tegn) || Character.isWhitespace(tegn) 
                   || erUnntak(tegn)) {
               buf.append(tegn);
           }
           else {
               buf.append("" + (int) tegn);
           }
       }     
       return buf.toString();
   }
   
   public static String[] filtrer(String[] tekster) {
       if(tekster == null) return null;
       for(int i = 0; i < tekster.length; i++){
           tekster[i] = filtrer(tekster[i]);
       }
       return tekster;
   }
   
   // Sjekker om tegnet er et av unntakene som ikke skal behandles
   private static boolean erUnntak(int tegn) {
       System.out.println("Test tegn: " + tegn);
       for (int i = 0; i < unntak.length; i++) {
           System.out.println("Unntaktest: " + (int)unntak[i]);
           if (tegn == (int)unntak[i]) {
               return true;
           }
       }
       return false;
   }
}

 

Når jeg kjører "å" inn i testen spytter den ut dette:

Test tegn: 165

Unntaktest: 229

Unntaktest: 230

Unntaktest: 248

Unntaktest: 197

Unntaktest: 198

Unntaktest: 216

 

Altså tolker den "å" som 229, men den "å'en" jeg sender inn blir til 165.

Noen tips? :)

Endret av ZoRaC
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...