CodeGym /Blog Java /Aleatoriu /11 metode parse() în Java cu exemple
John Squirrels
Nivel
San Francisco

11 metode parse() în Java cu exemple

Publicat în grup
Analiza în sensul său cel mai general este extragerea informațiilor necesare dintr-o anumită bucată de date, cel mai adesea date textuale. Ce este parse în Java? Există multe clase Java care au metoda parse() . De obicei, metoda parse() primește un șir ca intrare, „extrage” informațiile necesare din ea și o convertește într-un obiect al clasei care apelează. De exemplu, a primit un șir și a returnat data care se „ascundea” în acest șir. În această postare, vom arunca o privire asupra celor 10 variații utile ale parse() .

0. parseInt()

Să începem de la una dintre cele mai populare metode parse() , care nu este tocmai parse() , ci parseInt() . Metoda Java parseInt () este utilizată pentru a obține tipul de date primitiv dintr-un șir specific. Cu alte cuvinte, transformă un șir într-un număr. parseInt () poate avea unul sau două argumente. Iată sintaxa lui parseInt() :

static int parseInt(String s)
static int parseInt(String s, int radix)
Unde s este șirul care reprezintă o valoare zecimală cu semn și radix baza unui sistem numeric. Rețineți că nu există o valoare de bază implicită - trebuie să introduceți una în intervalul 2 și 36. Iată un exemplu. Cum se analizează cu 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));
         
       }
   }
Ieșirea este:
12 12,0 4 65

1. Metoda de analiză a perioadei ().

Period este o clasă Java pentru a modela o cantitate de timp în termeni de ani, luni și zile, cum ar fi „3 ani, 5 luni și 2 zile”. Are o metodă parse() pentru a obține un punct dintr-un text. Iată sintaxa punctului parse()

public static Period parse(CharSequence text)
CharSequence este o interfață, implementată de Strings. Deci, puteți utiliza șiruri de caractere ca element text în metoda parse() . Sigur că șirul ar trebui să fie în format adecvat pentru a returna un obiect din clasa Period. Acest format este PnYnMnD . Unde Y înseamnă „an”, M — pentru „lună”, D — pentru „zi”. N este un număr corespunzător valorii fiecărei perioade.
  • Metoda are un parametru - o valoare text.
  • Parse() returnează o valoare Period în care valoarea unui șir devine parametru.
  • Ca o excepție, period parse() poate returna DateTimeParseException dacă valoarea șirului nu îndeplinește structura unei perioade.
Iată un exemplu de utilizare a perioadei parse() în contextul real:

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");
   }
}
	} 
} 
Ieșirea este:
vârsta este: 17 ani 9 luni 5 zile

2.Metoda SimpleDateFormat Parse().

SimpleDateFormat este o clasă care este utilizată pentru formatarea și analizarea datelor într-o manieră sensibilă la locale. Metoda SimpleDateFormat parse() descompune un șir în indicative de dată și returnează o valoare Data în formatul corespunzător. Metoda începe analizarea șirului la un index, definit de un dezvoltator. Aceasta este sintaxa SimpleDateFormat parse() :

public Date parse(String the_text, ParsePosition position)
Metoda are doi parametri:
  • Poziție: datele de la indexul de pornire care este întotdeauna tipul de obiect ParsePosition.
  • the_text: definește șirul pe care metoda îl va analiza și este o valoare de tip String.
Puteți utiliza această metodă fără declararea poziției. În acest caz, datele pornesc de la indicele zero. SimpleDateFormat parse() returnează o dată sau o valoare nulă (în cazul în care șirul nu a fost procesat din cauza unei erori). Iată un exemplu de implementare SimpleDateFormat parse() :

// 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);
   }
}
Ieșirea este:
miercuri 14 oct 00:00:00 EEST 2020 miercuri 14 oct 00:00:00 EEST 2020 miercuri 14 oct 00:00:00 EEST 2020 duminică 04 oct 00:00:00 EEST 2020 null
Ultimul este nul deoarece nu există un model de dată care începe din a 5-a poziție. Apropo, dacă încercați să analizați data5 fără poziție, cum ar fi Date date5 = simpleDateFormat2.parse(myString) , veți obține o excepție:
Excepție în firul „principal” java.text.ParseException: Data imposibil de analizat: „aici este data: 14/010/2020” la java.base/java.text.DateFormat.parse(DateFormat.java:396) la ParseDemo2.main (ParseDemo2.java:22)

3. Metoda LocalDate parse().

LocalDate este o clasă care a apărut în Java 8 pentru a reprezenta o dată, cum ar fi an-lună-zi (zi-a-an, ziua-săptămânii și săptămână-în-an, pot fi, de asemenea, accesate). LocalDate nu reprezintă o oră sau un fus orar. Metoda LocalDate parse() are două variante. Ambele ajută la convertirea unui șir într-un nou API de date Java 8 — java.time.LocalDate .

parse(CharSequence text, DateTimeFormatter, formatator)

Această metodă analizează un șir folosind un formatator specific pentru a obține o instanță de LocalDate. Iată sintaxa metodei:

public static LocalTime parse(CharSequence text,
                              DateTimeFormatter formatter)
Există doi parametri pentru metodă — textul care va fi analizat și formatatorul pe care îl va aplica un dezvoltator. Ca valoare returnată, metoda returnează un obiect LocalTime care va fi recunoscut ca ora locală a zilei. Dacă valoarea textului nu a putut trece prin parsare, sistemul aruncă DayTimeParseException. Să avem un exemplu de cod de utilizare LocalDate parse() cu doi parametri:

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));
   }
}
Ieșirea este:
data locală analizată: 2020-10-14 data locală formatată: 14/10/2020
Metoda LocalDate parse() cu un parametru are următoarea sintaxă:

public static LocalTime parse(CharSequence text)
Această metodă nu necesită specificarea unui formatator. După ce un dezvoltator introduce valorile șirului de caractere între paranteze, sistemul va folosi automat DateTimeFormatter.ISO_LOCAL_DATE. Această metodă are un singur parametru - un text CharSequence. Puteți utiliza aici valoarea șirului. Asigurați-vă că nu este nul și respectă structura formatatorului. Dacă nu există nicio modalitate de a analiza un șir, un dezvoltator primește DateTimeExceptionAlert. Iată un exemplu de aplicație LocalDate parse() :

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);
       }
   }
Ieșirea este:
Data locală: 2020-10-14

4. Metoda LocalDateTime parse().

LocalDateTime un obiect dată-oră care reprezintă o dată-oră văzută destul de des ca an-lună-zi-oră-minut-secundă. De asemenea, dezvoltatorii pot folosi alte câmpuri de dată și oră (zi din an, zi din săptămână și săptămână din an). Această clasă este imuabilă. Timpul este reprezentat cu precizie de nanosecundă. De exemplu, puteți stoca valoarea „17 noiembrie 2020 la 13:30.30.123456789” într-un LocalDateTime. Această clasă nu este despre reprezentarea unui fus orar. Este mai degrabă o reprezentare standard a datei plus ora locală. Metoda LocalDateTime parse() reprezentată în două variante:
  • static LocalDateTime parse(CharSequence text) returnează o instanță a LocalDateTime dintr-un șir de text, cum ar fi 2007-12-03T10:15:30.
  • static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter) returnează o instanță de LocalDateTime dintr-un șir de text folosind un formatator specific.
Iată un exemplu de metodă LocalDateTime parse() :

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);
       }
   }
Ieșirea este:
LocalDateTime este: 2020-11-17T19:34:50.630

5. Metoda parse() ZonedDateTime

Clasa ZonedDateTime reprezintă o dată-oră cu un fus orar. Această clasă este imuabilă. Stochează câmpurile de dată și oră cu o precizie de nanosecunde și un fus orar, cu un offset de zonă utilizat pentru a gestiona date-orele locale ambigue. Deci, dacă trebuie să păstrați o valoare precum „14 octombrie 2020 la 17:50.30.123456789 +02:00 în fusul orar Europe/Paris”, puteți utiliza ZonedDateTime. Clasa este adesea folosită pentru a manipula date locale bazate pe timp. ZondeDateTime parse() este un parser care descompune șirul în jetoane în sistemul ISO-8061. Iată un exemplu de valoare pe care o veți obține după parsare:
2020-04-05T13:30:25+01:00 Europa/Roma
Este folosit ori de câte ori sunt necesare date de înaltă precizie (la urma urmei, datele pe care le obțineți sunt precise de până la nanosecunde). Clasa este adesea folosită pentru a manipula date locale bazate pe timp. Să aruncăm o privire la sintaxa generală a metodei ZonedDateTime parse() pe care dezvoltatorii o folosesc pentru a converti valorile șirurilor în clasa ZonedDateTime.

public static ZonedDateTime parse(CharSequence text)
Singurul parametru pe care îl folosește metoda este un șir de text. Ca valoare returnată, veți obține unul sau o serie de obiecte în format ZonedDateTime. Dacă există o eroare în timpul parsării sau este imposibil, pentru început, metoda returnează DateTimeParseException. De asemenea, există o metodă parse() cu două variabile.

public static ZonedDateTime parse(CharSequence text, DateFormatter formatter)
Această metodă obține o instanță de ZonedDateTime dintr-o valoare text folosind un formatator specific. Metoda cu un singur parametru, formatatorul DateTimeFormatter.ISO_LOCAL_TIME este utilizată implicit. Să aruncăm o privire la cazul de utilizare pentru 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);
   }
}
Ieșirea este:
2020-10-15T10:15:30+01:00 2020-10-15T13:30:25+01:00

6. Metoda LocalTime parse().

Clasa LocalTime reprezintă un timp, adesea văzut ca oră-minut-secundă. Această clasă este, de asemenea, imuabilă, cum ar fi ZonedDateTime.Time este reprezentat cu precizie de nanosecundă. De exemplu, valoarea „13:45.30.123456789” poate fi stocată într-un local Time. Există două metode LocalTime parse() , cu unul și doi parametri. Să aruncăm o privire la ambele:

public static LocalTime parse(CharSequence text)
Puteți utiliza LocalTime parse() cu un singur parametru, șirul pe care doriți să îl analizați. În acest caz, formatatorul DateTimeFormatter.ISO_LOCAL_TIME este utilizat în mod implicit.

Method with two parameters has the next syntax: 
public static LocalTime parse(CharSequence text,
                              DateTimeFormatter formatter)
Obține o instanță de LocalTime dintr-o valoare text folosind un formatator specific. Ambele metode returnează valoarea LocalTime în formatul hh/mm/ss. Atenție la alertele DateTimeParceException. Ele înseamnă că formatul șirului de text nu corespunde cu cel al obiectelor LocalTime. Iată un exemplu de utilizare LocalTime parse() în producție:

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. Metoda MessageFormat Parse().

MessageFormat extinde clasa Format. Format este o clasă de bază abstractă pentru formatarea datelor sensibile la locale (date, mesaje și numere). MessageFormat primește unele obiecte și le formatează. Apoi inserează șirurile formatate în model în locurile potrivite. Parse() MessageFormat este folosit pentru a obține o valoare șir dacă este dat începutul indexului. Iată sintaxa generală a metodei:

public Object[] parse(String source, ParsePosition position)
Unde sursa este un șir de analizat și poziția este indexul de pornire al analizei. Iată un exemplu de funcționare a metodei MessageFormat parse() :

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. Metoda parse() de nivel

Când un programator folosește un Logger pentru a înregistra un mesaj, acesta este înregistrat cu un anumit nivel de jurnal. Există șapte niveluri de jurnal încorporate:
  • GRAVĂ
  • AVERTIZARE
  • INFO
  • CONFIG
  • AMENDA
  • MAI FINE
  • MAI FINE
De asemenea, există niveluri suplimentare OFF care pot fi folosite pentru a dezactiva înregistrarea și ALL care pot fi folosite pentru a activa înregistrarea tuturor mesajelor. Nivelul de jurnal este reprezentat de clasa java.util.logging.Level . Clasa de nivel conține o constantă pentru fiecare dintre aceste șapte niveluri. Deci, utilizați una dintre aceste constante, inclusiv Toate și OFF în timp ce înregistrați un mesaj într-un Logger. De asemenea, toate aceste niveluri au fost inițializate la niște numere întregi. De exemplu, FINE este inițializat la 500. Metoda Level parse() analizează o informație necesară dintr-o valoare text și returnează un obiect Level. Iată sintaxa metodei level parse() :

public static Level parse(String name)
Parametrul unei metode este numele unui șir pe care dezvoltatorul dorește să îl analizeze. Ar putea fi un nume al nivelului, numele său de inițializare sau un alt număr întreg. În schimb, un programator primește o valoare de nume Level, corespunzătoare cu cea a șirului inițial. În cazul în care argumentul conține simboluri care sunt imposibil de analizat, sistemul va arunca IllegalArgumentException. Dacă un șir nu conține valori, un dezvoltator primește o excepție NullPointerException. Iată o bucată de cod care arată implementarea 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());
   }
}
Ieșirea este:
Nivel = FINE Nivel = FINE OFF

9. Metoda parse() instant

Clasa instantanee modelează un singur punct instantaneu pe linia timpului. Îl puteți folosi pentru înregistrarea marcajelor de timp ale evenimentelor în aplicația dvs. Instant parse() obține o valoare Instant dintr-o valoare text. Șirul va fi stocat ulterior ca valoare de fus orar UTC. Sistemul folosește DateTimeFormatter.ISO_INSTANT, cum ar fi 2020-10-14T11:28:15.00Z. Iată o sintaxă a metodei Instant parse() :

public static Instant parse(CharSequence text)
Pentru a analiza un șir și a obține un instant, un dezvoltator trebuie să se asigure că șirul conține ceva text. În cazul în care este nulă, veți obține o excepție DateTimeException. Iată un exemplu de utilizare a analizei instantanee în 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);
       }
   }
Ieșirea este:
2020-10-14T10:37:30Z

10. Metoda NumberFormat parse().

Clasa java.text.NumberFormat este folosită pentru a formata numere. NumberFormat parse() este o metodă implicită a acestei clase. Metoda parse () a clasei NumberFormat convertește un șir într-un număr. Dezvoltatorii îl folosesc pentru a sparge un șir până la numerele componentelor sale. Analiza începe de la începutul șirului. Dacă apelați setParseIntegerOnly (adevărat) înainte de a apela metoda parse () , așa cum se arată în exemplul următor, atunci numai partea întreagă a numărului este convertită. Iată sintaxa lui NumberFormat parse() :

public Number parse(String str)
Ca parametru, funcția acceptă șiruri. O valoare returnată a analizei este o valoare numerică. Dacă un început de șir nu poate fi analizat, veți primi un avertisment ParseException. Pentru a vedea aplicarea metodei NumberFormat parse() , aruncați o privire la exemplul de mai jos:

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"));
       }
   }
Ieșirea este:
3.141592 3

Concluzie

Există o mulțime de metode de analiză pe care dezvoltatorii le pot folosi pentru a converti șiruri de caractere în diferite tipuri de date. Deși amintirea lor poate părea obositoare, o astfel de varietate de comenzi oferă dezvoltatorilor multă flexibilitate și precizie. Asigurați-vă că practicați utilizarea analizei datelor pentru a vă asigura că vă amintiți sintaxa și nu veți uita ce parametri sunt esențiali pentru fiecare metodă.
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION