CodeGym /Java blog /Tilfældig /11 parse() metoder i Java med eksempler
John Squirrels
Niveau
San Francisco

11 parse() metoder i Java med eksempler

Udgivet i gruppen
Parsing i sin mest generelle betydning er udtrækning af den nødvendige information fra et eller andet stykke data, oftest tekstdata. Hvad er parse i Java? Der er mange Java-klasser, der har parse()- metoden. Normalt modtager parse() -metoden en streng som input, "udtrækker" den nødvendige information fra den og konverterer den til et objekt af den kaldende klasse. For eksempel modtog den en streng og returnerede den dato, der "gemte sig" i denne streng. I dette indlæg skal vi tage et kig på de 10 nyttige variationer af parse() .

0. parseInt()

Lad os starte fra en af ​​de mest populære parse() metoder, det er ikke ligefrem parse() , men parseInt() . Java parseInt () metode bruges til at hente den primitive datatype fra en bestemt streng. Med andre ord konverterer den en streng til et tal. parseInt () kan have et eller to argumenter. Her er syntaksen for parseInt() :

static int parseInt(String s)
static int parseInt(String s, int radix)
Hvor s er strengen, der repræsenterer en decimalværdi med fortegn, og radix bunden af ​​et numerisk system. Husk, at der ikke er nogen standard basisværdi - du skal indtaste en inden for intervallet 2 og 36. Her er et eksempel. Sådan parses med ParseInt():

public class ParseInt0 {

       public static void main(String args[]){
           int x = Integer.parseInt("12");
           double c = Double.parseDouble("12");
           int b = Integer.parseInt("100",2);

           System.out.println(Integer.parseInt("12"));
           System.out.println(Double.parseDouble("12"));
           System.out.println(Integer.parseInt("100",2));
           System.out.println(Integer.parseInt("101", 8));
         
       }
   }
Udgangen er:
12 12,0 4 65

1. Periode parse() metode

Periode er en Java-klasse til at modellere en mængde tid i form af år, måneder og dage, såsom "3 år, 5 måneder og 2 dage". Den har en parse() -metode til at få et punktum fra en tekst. Her er syntaksen for period parse()

public static Period parse(CharSequence text)
CharSequence er en grænseflade, implementeret af Strings. Så du kan bruge Strings som et tekstelement i metoden parse() . Sikker på, at strengen skal være i korrekt format for at returnere et objekt af Periode-klassen. Dette format er PnYnMnD . Hvor Y står for "år", M - for "måned", D - for "dag". N er et tal, der svarer til hver periodeværdi.
  • Metoden har én parameter - en tekstværdi.
  • Parse() returnerer en periodeværdi, hvor værdien af ​​en streng bliver en parameter.
  • Som en undtagelse kan period parse() returnere DateTimeParseException, hvis strengværdien ikke opfylder strukturen af ​​en periode.
Her er et eksempel på brug af Period parse() i den virkelige verden:

import java.time.Period;
public class ParseDemo1 {

   public static void main(String[] args)
   {
       //Here is the age String in format to  parse
       String age = "P17Y9M5D";

       // Converting strings into period value
       // using parse() method
       Period p = Period.parse(age);
       System.out.println("the age is: ");
       System.out.println(p.getYears() + " Years\n"
                          + p.getMonths() + " Months\n"
                          + p.getDays() + " Days\n");
   }
}
	} 
} 
Udgangen er:
alderen er: 17 år 9 måneder 5 dage

2.SimpleDateFormat Parse() metode

SimpleDateFormat er en klasse, der bruges til at formatere og analysere datoer på en lokalitetsfølsom måde. SimpleDateFormat parse() -metoden opdeler en streng i datotokens og returnerer en dataværdi i det tilsvarende format. Metoden begynder at parse strengen ved et indeks, defineret af en udvikler. Dette er syntaksen for SimpleDateFormat parse() :

public Date parse(String the_text, ParsePosition position)
Metoden har to parametre:
  • Position: dataene ved startindekset, som altid er ParsePosition-objekttypen.
  • the_text: definerer strengen, som metoden vil analysere, og er en strengtypeværdi.
Du kan bruge denne metode uden positionsangivelse. I dette tilfælde starter data fra nul indeks. SimpleDateFormat parse() returnerer en dato eller en null-værdi (i tilfælde af at strengen ikke blev behandlet på grund af en fejl). Her er et eksempel på SimpleDateFormat parse() implementering:

// Parsing strings into the Date format with two different patterns import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ParseDemo2 {
   public static void main(String[] args) throws ParseException {
       SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("MM/dd/yyyy");
       SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("dd/MM/yyyy");
       //simpleDateFormat1.setLenient(false);
       Date date1 = simpleDateFormat1.parse("010/14/2020");
       System.out.println(date1);
       Date date2 = simpleDateFormat2.parse("14/10/2020");
       System.out.println(date2);
       ParsePosition p1 = new ParsePosition(18);
       ParsePosition p2 = new ParsePosition(19);
       ParsePosition p3 = new ParsePosition(5);

       String myString = "here is the date: 14/010/2020";
       Date date3 = simpleDateFormat2.parse(myString,p1);
       Date date4 = simpleDateFormat2.parse(myString,p2);
       Date date5 = simpleDateFormat2.parse(myString,p3);

       System.out.println(date3);
       System.out.println(date4);
       System.out.println(date5);
   }
}
Udgangen er:
Ons 14. okt 00:00:00 EEST 2020 Ons 14. okt 00:00:00 EEST 2020 Ons 14. okt 00:00:00 EEST 2020 Søn 04. okt 00:00:00 EEST 2020 null
Den sidste er nul, fordi der ikke er noget datomønster, der starter fra 5. position. Forresten, hvis du prøver at parse date5 uden position såsom Date date5 = simpleDateFormat2.parse(myString) , får du en undtagelse:
Undtagelse i tråden "main" java.text.ParseException: Unparseable date: "her er datoen: 14/010/2020" på java.base/java.text.DateFormat.parse(DateFormat.java:396) på ParseDemo2.main (ParseDemo2.java:22)

3. LocalDate parse() metode

LocalDate er en klasse, der dukkede op i Java 8 for at repræsentere en dato som år-måned-dag (dag-i-år, dag-i-uge og uge-i-år, kan også tilgås). LocalDate repræsenterer ikke en tid eller tidszone. LocalDate parse() -metoden har to varianter. Begge hjælper med at konvertere en streng til en ny Java 8 date API — java.time.LocalDate .

parse(CharSequence-tekst, DateTimeFormatter, formatter)

Denne metode analyserer en streng ved hjælp af en specifik formatering for at opnå en forekomst af LocalDate. Her er metodens syntaks:

public static LocalTime parse(CharSequence text,
                              DateTimeFormatter formatter)
Der er to parametre for metoden - teksten, der vil blive analyseret, og formateringen en udvikler vil anvende. Som en returværdi returnerer metoden et LocalTime-objekt, der vil blive genkendt som den lokale dagtid. Hvis tekstværdien ikke kunne gå gennem parsing, kaster systemet DayTimeParseException. Lad os få et kodeeksempel på brug af LocalDate parse() med to parametre:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class ParserDemo3 {

   public static void main(String[]args) {

       DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
       String date = "14/10/2020";
       LocalDate localDate = LocalDate.parse(date, formatter);
       System.out.println("parsed local date: " + localDate);
       System.out.println("formatted local date: " + formatter.format(localDate));
   }
}
Udgangen er:
parset lokal dato: 2020-10-14 formateret lokal dato: 14/10/2020
LocalDate parse() -metoden med én parameter har den næste syntaks:

public static LocalTime parse(CharSequence text)
Denne metode kræver ikke, at du angiver en formatering. Når en udvikler har indtastet strengværdierne i parentes, vil systemet automatisk bruge DateTimeFormatter.ISO_LOCAL_DATE. Denne metode har en enkelt parameter - en CharSequence-tekst. Du kan bruge strengværdien her. Sørg for, at den ikke er nul og respekterer formateringsprogrammets struktur. Hvis der ikke er nogen måde at parse en streng på, får en udvikler DateTimeExceptionAlert. Her er et eksempel på LocalDate parse() -applikationen:

import java.time.*;
public class ParseDemo3 {
       public static void main(String[] args)
       {
           // let’s make a new LocalDate object
           LocalDate localDate = LocalDate.parse("2020-10-14");
           System.out.println("LocalDate : " + localDate);
       }
   }
Udgangen er:
Lokaldato: 2020-10-14

4. LocalDateTime parse() metode

LocalDateTime et dato-klokkeslæt objekt, der repræsenterer en dato-klokkeslæt, der ses temmelig ofte som år-måned-dag-time-minut-sekund. Udviklere kan også bruge andre dato- og tidsfelter (dag-i-år, dag-i-uge og uge-i-år). Denne klasse er uforanderlig. Tid er repræsenteret med nanosekunders præcision. For eksempel kan du gemme værdien "17. november 2020 kl. 13:30.30.123456789" i en LocalDateTime. Denne klasse handler ikke om at repræsentere en tidszone. Det er snarere en standard dato repræsentation plus lokal tid. LocalDateTime parse() metode repræsenteret i to varianter:
  • statisk LocalDateTime parse(CharSequence text) returnerer en forekomst af LocalDateTime fra en tekststreng som f.eks. 2007-12-03T10:15:30.
  • statisk LocalDateTime-parse(CharSequence-tekst, DateTimeFormatter-formater) returnerer en forekomst af LocalDateTime fra en tekststreng ved hjælp af en bestemt formatter.
Her er et eksempel på LocalDateTime parse() -metoden:

import java.time.*;
public class ParseDemo11 {
       public static void main(String[] args) {
           LocalDateTime localDateTime = LocalDateTime.parse("2020-11-17T19:34:50.63");
           System.out.println("LocalDateTime is: " + localDateTime);
       }
   }
Udgangen er:
LocalDateTime er: 2020-11-17T19:34:50.630

5. ZonedDateTime parse() metode

Klasse ZonedDateTime repræsenterer en dato-tid med en tidszone. Denne klasse er uforanderlig. Den gemmer dato- og tidsfelter med en præcision på nanosekunder og en tidszone med en zoneforskydning, der bruges til at håndtere tvetydige lokale dato-tider. Så hvis du har brug for at beholde en værdi som "14. oktober 2020 kl. 17:50.30.123456789 +02:00 i tidszonen Europa/Paris", kan du bruge ZonedDateTime. Klassen bruges ofte til at manipulere lokale tidsbaserede data. ZondeDateTime parse() er en parser, der opdeler strengen i tokens i ISO-8061-systemet. Her er et eksempel på en værdi, du får efter parsing:
2020-04-05T13:30:25+01:00 Europa/Rom
Det bruges, når der er behov for højpræcisionsdata (de data, du får, er trods alt præcise op til nanosekunder). Klassen bruges ofte til at manipulere lokale tidsbaserede data. Lad os tage et kig på den generelle syntaks for ZonedDateTime-parse() -metoden, som udviklere bruger til at konvertere strengværdier til ZonedDateTime-klassen.

public static ZonedDateTime parse(CharSequence text)
Den eneste parameter metoden bruger er en strengtekst. Som returværdi får du et eller en række objekter i ZonedDateTime-formatet. Hvis der er en fejl under parsing, eller det er umuligt, returnerer metoden til at begynde med DateTimeParseException. Der er også en parse() -metode med to variable.

public static ZonedDateTime parse(CharSequence text, DateFormatter formatter)
Denne metode henter en forekomst af ZonedDateTime fra en tekstværdi ved hjælp af en specifik formatering. Metoden med én parameter, formateren DateTimeFormatter.ISO_LOCAL_TIME , bruges som standard. Lad os tage et kig på brugssagen for ZonedDateTime parse():

// An example program that uses
// ZonedDateTime.parse() method
  
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class ParseDemo4 {
   public static void main(String[] args) {
       ZonedDateTime zonedDateTime = ZonedDateTime.parse("2020-10-15T10:15:30+01:00");
       System.out.println(zonedDateTime);

       DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;
       String date = "2020-10-15T13:30:25+01:00";
       ZonedDateTime zoneDateTime1 = ZonedDateTime.parse(date, dateTimeFormatter);
       System.out.println(zoneDateTime1);
   }
}
Udgangen er:
2020-10-15T10:15:30+01:00 2020-10-15T13:30:25+01:00

6. LocalTime parse() metode

Klasse LocalTime repræsenterer et tidspunkt, ofte set som time-minut-sekund. Denne klasse er også uforanderlig, såsom ZonedDateTime.Time er repræsenteret med nanosekunders præcision. For eksempel kan værdien "13:45.30.123456789" gemmes i en LocalTime. Der er to LocalTime parse() metoder med en og to parametre. Lad os tage et kig på begge dele:

public static LocalTime parse(CharSequence text)
Du kan bruge LocalTime parse() med kun én parameter, den streng du vil parse. I dette tilfælde bruges formateren DateTimeFormatter.ISO_LOCAL_TIME som standard.

Method with two parameters has the next syntax: 
public static LocalTime parse(CharSequence text,
                              DateTimeFormatter formatter)
Det Henter en forekomst af LocalTime fra en tekstværdi ved hjælp af en bestemt formatering. Begge metoder returnerer LocalTime-værdien i tt/mm/ss-formatet. Hold øje med DateTimeParceException-advarsler. De betyder, at formatet af strengteksten ikke svarer til det for LocalTime-objekter. Her er et eksempel på brug af LocalTime parse() i produktionen:

import java.time.*;
import java.time.format.*;
public class ParseDemo5 {

       public static void main(String[] args)
       {

           LocalTime localTime
                   = LocalTime.parse("10:25:30");

           // return the output value
           System.out.println("LocalTime : "
                              + localTime);

           // create a formater
           DateTimeFormatter formatter
                   = DateTimeFormatter.ISO_LOCAL_TIME;

           LocalTime localTime1
                   = LocalTime.parse("12:30:50");
           // parse a string to get a LocalTime object in return

           LocalTime.parse("12:30:50",
               formatter);
           // print the output
           System.out.println("LocalTime : "
                              + localTime1);
       }
   }

7. MessageFormat Parse() metode

MessageFormat udvider Format-klassen. Format er en abstrakt basisklasse til formatering af lokalitetsfølsomme data (datoer, meddelelser og tal). MessageFormat henter nogle objekter og formaterer dem. Derefter indsætter den de formaterede strenge i mønsteret på de relevante steder. MessageFormat parse() bruges til at få en strengværdi, hvis indekset begynder. Her er den generelle syntaks for metoden:

public Object[] parse(String source, ParsePosition position)
Hvor source er en streng, der skal parses, og position er startindekset for parsing. Her er et eksempel på, hvordan MessageFormat parse() -metoden fungerer:

import java.text.MessageFormat;
import java.text.ParsePosition;

public class ParseDemo7 {
   public static void main(String[] args) {
    try {
           MessageFormat messageFormat = new MessageFormat("{1, number, #}, {0, number, #.#}, {2, number, #.##}");

           ParsePosition pos = new ParsePosition(3);
           Object[] hash = messageFormat.parse("12.101, 21.382, 35.121", pos);

           System.out.println("value after parsing: ");
           for (int i = 0; i < hash.length; i++)
               System.out.println(hash[i]);
       }
       catch (NullPointerException e) {
          System.out.println("\nNull");
          System.out.println("Exception thrown : " + e);
       } }
}

8. Level parse() metode

Når en programmør bruger en logger til at logge en besked, logges den med et bestemt logniveau. Der er syv indbyggede log-niveauer:
  • ALVORLIG
  • ADVARSEL
  • INFO
  • KONFIG
  • BØDE
  • FINERE
  • FINESTE
Der er også yderligere niveauer FRA, der kan bruges til at slå logning fra, og ALT, der kan bruges til at aktivere logning af alle meddelelser. Logniveauet er repræsenteret af klassen java.util.logging.Level . Niveauklasse indeholder en konstant for hvert af disse syv niveauer. Så du bruger en af ​​disse konstanter, inklusive Alle og FRA, mens du logger en besked til en logger. Også alle disse niveauer initialiseret til nogle heltal. FINE initialiseres f.eks. til 500. Level parse() -metoden analyserer en nødvendig information fra en tekstværdi og returnerer et Level-objekt. Her er syntaksen for level parse() -metoden:

public static Level parse(String name)
Parameteren for en metode er navnet på en streng, som en udvikler ønsker at parse. Det kan være et navn på niveauet, dets initialiseringsnavn eller et andet heltal. Til gengæld får en programmør en niveaunavnværdi, der svarer til den oprindelige streng. Hvis argumentet indeholder symboler, der er umulige at parse, vil systemet kaste IllegalArgumentException. Hvis en streng ikke indeholder nogen værdier, får en udvikler en NullPointerException. Her er et stykke kode, der viser implementeringen af ​​Level parse() .

import java.util.logging.Level;
public class ParseDemo6 {

   public static void main(String[] args)
   {
       Level level = Level.parse("500");
       System.out.println("Level = " + level.toString());

       Level level1 = Level.parse("FINE");
       System.out.println("Level = " + level1.toString());

       Level level2 = level.parse ("OFF");
       System.out.println(level2.toString());
   }
}
Udgangen er:
Niveau = FIN Niveau = FIN FRA

9. Instant parse() metode

Instant klasse modellerer et enkelt øjeblikkeligt punkt på tidslinjen. Du kan bruge det til at optage begivenhedstidsstempler i din app. Instant parse() henter en øjeblikkelig værdi fra en tekstværdi. Strengen vil senere blive gemt som en UTC-tidszoneværdi. Systemet bruger DateTimeFormatter.ISO_INSTANT såsom 2020-10-14T11:28:15.00Z. Her er en syntaks for Instant parse() -metoden:

public static Instant parse(CharSequence text)
For at parse en streng og få et øjeblik, skal en udvikler sørge for, at strengen indeholder noget tekst. Hvis den er null, får du en DateTimeException. Her er et eksempel på brug af Instant parse i Java:

import java.time.Instant;

public class ParseDemo8 {
       public static void main(String[] args) {

           Instant instant = Instant.parse("2020-10-14T10:37:30.00Z");
           System.out.println(instant);
       }
   }
Udgangen er:
2020-10-14T10:37:30Z

10. NumberFormat parse() metode

Klassen java.text.NumberFormat bruges til at formatere tal. NumberFormat parse() er en standardmetode for denne klasse. Parse () -metoden i klassen NumberFormat konverterer en streng til et tal. Udviklere bruger det til at bryde en streng ned til dens komponentnumre. Parsingen starter fra begyndelsen af ​​strengen. Hvis du kalder setParseIntegerOnly (true) , før du kalder parse () -metoden, som vist i følgende eksempel, så konverteres kun den heltallige del af tallet. Her er syntaksen for NumberFormat parse() :

public Number parse(String str)
Som en parameter accepterer funktionen strenge. En returværdi af parsingen er en numerisk værdi. Hvis en strengbegyndelse ikke kan parses, får du en ParseException-advarsel. For at se anvendelsen af ​​NumberFormat-parse()- metoden, tag et kig på eksemplet nedenfor:

import java.text.NumberFormat;
import java.text.ParseException;

public class ParseDemo9 {

       public static void main(String[] args) throws ParseException {
           NumberFormat numberFormat = NumberFormat.getInstance();
           System.out.println(numberFormat.parse("3,141592"));
           numberFormat.setParseIntegerOnly(true);
           System.out.println(numberFormat.parse("3,141592"));
       }
   }
Udgangen er:
3.141592 3

Konklusion

Der er mange parsingmetoder, som udviklere kan bruge til at konvertere strenge til forskellige datatyper. Selvom det kan virke kedeligt at huske dem, giver et sådant udvalg af kommandoer udviklere en masse fleksibilitet og præcision. Sørg for at øve dig i at bruge dataparsing for at sikre, at du husker syntaksen og ikke glemmer, hvilke parametre der er essentielle for hver metode.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION