Avatar billede f_bar Nybegynder
29. januar 2003 - 15:33 Der er 2 kommentarer og
2 løsninger

uddrag int fra String

Jeg har en lang string
ex : test test test 12345678 test test
Jeg ved ikke hvor lang den er eller hvor min 8 karakterer lang int er i sætningen.
Men jeg har brug for en funktion der tager denne string som input parameter og returner int'en til sidst.
Håber i kan hjælpe
Takker
Avatar billede ahj123 Nybegynder
29. januar 2003 - 15:42 #1
Hvis du er sikker på der er mellemrum foran og efter int'en kan du bruge StringTokenizer til at at splitte String'en op i tokens, og derefter bruge Integer.parseInt() på hver token.

hvis strengen er s,

StringTokenizer tokenizer = new StringTokenizer(s);
int tal;
while(tokenizer.hasMoreTokens() {
  String s = tokenizer.nextToken();
  try {
    tal = Integer.parseInt(s);
    break;
  }
  catch(IllegalNumberFormatException e) {}
}

med forbehold for syntaksfejl :-)
Avatar billede arne_v Ekspert
29. januar 2003 - 16:30 #2
StringTokenizer st = new StringTokenizer(line, " ");
            int num;
            String s;
            while (st.hasMoreTokens()) {
              s = st.nextToken();
              if (isAllDigits(s)) {
                  num = Integer.parseInt(s);
                  System.out.println("number=" + num);
              } else {
                  System.out.println("string=" + s);
              }
            }
        }
      } catch (FileNotFoundException e) {
      } catch (IOException e) {
      }
  }
  private static boolean isAllDigits(String s) {
      for (int i = 0; i < s.length(); i++) {
        if (!Character.isDigit(s.charAt(0))) {
            return false;
        }
      }
      return true;
  }
Avatar billede arne_v Ekspert
29. januar 2003 - 16:36 #3
Hov. Der var lidt ekstra linier hvorfra jeg klippede det. Jeg
prøver igen:

            StringTokenizer st = new StringTokenizer(line, " ");
            int num;
            String s;
            while (st.hasMoreTokens()) {
              s = st.nextToken();
              if (isAllDigits(s)) {
                  num = Integer.parseInt(s);
                  System.out.println("number=" + num);
              } else {
                  System.out.println("string=" + s);
              }
            }

  private static boolean isAllDigits(String s) {
      for (int i = 0; i < s.length(); i++) {
        if (!Character.isDigit(s.charAt(0))) {
            return false;
        }
      }
      return true;
  }

logikken er ihvertfald meget simpelt - bare test for om et token består af ene
tal.
Avatar billede f_bar Nybegynder
30. januar 2003 - 17:25 #4
takker
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