Avatar billede a-torsten Nybegynder
27. maj 2002 - 11:57 Der er 10 kommentarer og
1 løsning

Indeholder streng bogstaver ?

Jeg har fx.

String tmpStreng = "123213a123123";
char[] tmpArray = tmpStreng.toCharArray();

Hvordan undersøger jeg så om tmpArray[x] er forskellig fra 0,1,2,3,4,5,6,7,8,9 på den nemmeste og smarteste måde.....
Avatar billede a-torsten Nybegynder
27. maj 2002 - 11:58 #1
Tror måske jeg skal have fat i isDigit men er ikke sikker...

anyone..??
Avatar billede soreno Praktikant
27. maj 2002 - 12:12 #2
String test = "1234abc56";
for(int i=0;i<test.length();i++)
{
        if(!Character.isDigit(test.charAt(i)))
        {
            System.out.println("Strengen indeholder andet end tal");
            break;
        }           
}
Avatar billede a-torsten Nybegynder
27. maj 2002 - 12:15 #3
Kanon... takker....
Avatar billede codemon Nybegynder
27. maj 2002 - 12:48 #4
try
{
  Long.parseLong(test);
}
catch(NumberFormatException e)
{
  System.out.println ("ikke kun tal");
}
Avatar billede erikjacobsen Ekspert
27. maj 2002 - 13:05 #5
Eller en helt tredie, nemlig regulære udtryk:
(PS: codemon, din virker ikke, da den også vil acceptere "-1")

import java.util.regex.*;

public class KunCifre {
  public static void main(String[] args) {
    String s = "2864234";
    Pattern onlyDigits = Pattern.compile("^[0-9]+$");
    Matcher matchOnlyDigits = onlyDigits.matcher(s);
    if (matchOnlyDigits.matches()) {
      System.out.println("Kun cifre");
    } else {
      System.out.println("Der var osse andet");
    }
  }
}
Avatar billede soreno Praktikant
27. maj 2002 - 13:21 #6
ok, der er vist ingen tvivl om at eriks løsning er mest generel og udvidelsesvenlig :-)
Avatar billede disky Nybegynder
27. maj 2002 - 13:21 #7
codemon at bruge exception til sådanne ting er ikke ifølge standarden, en exception skal bruges til netop at fange en exception :)

Torsten: erik's svar virker kun i JDK1.4 og op.
Avatar billede a-torsten Nybegynder
27. maj 2002 - 13:39 #8
Disky.... sku lige til at spørge om netop dette.... ... :o)

    while (!formok)   
            {
                if (textfield_fornavn.getText().equals(""))
                {
                    label_fejl.setText("Fornavn SKAL udfyldes");
                    break;
                }
                if (textfield_efternavn.getText().equals(""))
                {
                    label_fejl.setText("Efternavn SKAL udfyldes");
                    break;
                }
                if (textfield_adresse.getText().equals(""))
                {
                    label_fejl.setText("Adresse SKAL udfyldes");
                    break;
                }
                if (textfield_postnummer.getText().equals(""))
                {
                    label_fejl.setText("Postnummer SKAL udfyldes");
                    break;
                }
                if (textfield_postnummer.getText().length() != 4)
                {
                    label_fejl.setText("Forkert postnummer");
                    break;       
                }
               
                tmpPostnr = textfield_postnummer.getText();
                char[] tmpArray = tmpPostnr.toCharArray();
               
                for(int i=0;i<tmpArray.length;i++)
                {
                      if(!Character.isDigit(tmpArray[i]))
                    {
                    label_fejl.setText("Forkert postnummer");
                    }                   
                }   
                if (textfield_email.getText().equals(""))
                {
                    label_fejl.setText("Email SKAL udfyldes");
                    break;
                }
                if (textfield_telefon.getText().equals(""))
                {
                    label_fejl.setText("Telefonnummer SKAL udfyldes");
                    break;
                }
               
                formok=true;
            }


Hvorfor tjekker den ikke den efterspurgte kode..??

-Anders
Avatar billede codemon Nybegynder
27. maj 2002 - 14:00 #9
alternative løsninger er der altid, og disky du har ret, så er dette nok smartere

  public boolean validate(String test)
  {
      StringTokenizer st = new StringTokenizer(test, "0123456789");
      return !st.hasMoreTokens();
  }
Avatar billede disky Nybegynder
27. maj 2002 - 14:53 #10
codemon:
Din sidste løsning er uden tvivl den pæneste indtil nu :-)

Den med regexp er også brugbar, men virker kun i jdk1.4 og regexp er rimeligt tungt rent performance mæssigt.
Avatar billede erikjacobsen Ekspert
27. maj 2002 - 15:26 #11
Jo da. Mit eksempel med regulære udtryk er ca. 4 gange så
langsomt som den med StringTokenizer (eller ca. 2 gange hvis
man kan genbruge det dannede Pattern flere gange).

Til gengæld kan den umiddelbart generaliseres - og læses....:)
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