Az elemzés a legáltalánosabb értelmében a szükséges információk kinyerése valamilyen adatból, leggyakrabban szöveges adatból. Mi az a parse a Java-ban? Sok Java osztály rendelkezik a parse() metódussal. Általában a parse() metódus valamilyen karakterláncot kap bemenetként, "kivonja" belőle a szükséges információkat és a hívó osztály objektumává alakítja. Például kapott egy karakterláncot, és visszaadta azt a dátumot, amely ebben a karakterláncban "bújt". Ebben a bejegyzésben a parse() 10 hasznos változatát tekintjük át .
0. parseInt()
Kezdjük az egyik legnépszerűbb parse() metódussal, ami nem éppen parse() , hanem parseInt() . A Java parseInt () metódus a primitív adattípus lekérésére szolgál egy adott karakterláncból. Más szavakkal, egy karakterláncot számmá alakít. parseInt () egy vagy két argumentummal rendelkezhet. Íme a parseInt() szintaxisa :
static int parseInt(String s)
static int parseInt(String s, int radix)
Ahol s az előjeles decimális értéket képviselő karakterlánc, a radix pedig a numerikus rendszer alapját. Ne feledje, hogy nincs alapértelmezett alapérték – 2 és 36 között kell megadnia egy értéket. Íme egy példa. Hogyan kell értelmezni a ParseInt() segítségével:
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));
}
}
A kimenet a következő:
12 12,0 4 65
1. Period parse() metódus
A Period egy Java osztály, amely egy időmennyiséget modellezi években, hónapokban és napokban, például „3 év, 5 hónap és 2 nap”. Van egy parse() metódusa, amellyel pontot kaphat egy szövegből. Íme a period parse() szintaxisa
public static Period parse(CharSequence text)
A CharSequence egy interfész, amelyet a Strings valósít meg. Tehát használhatja a Stringeket szövegelemként a parse() metódusban. Természetesen a karakterláncnak megfelelő formátumban kell lennie ahhoz, hogy egy Period osztályú objektumot adjon vissza. Ez a formátum a PnYnMnD . Ahol Y jelentése „év”, M – „hónap”, D – „nap”. N az egyes periódusértékeknek megfelelő szám.
- A metódusnak egy paramétere van – egy szöveges érték.
- A Parse() egy Period értéket ad vissza, ahol egy karakterlánc értéke paraméterré válik.
- Kivételként a period parse() visszaadhatja a DateTimeParseException értéket, ha a karakterlánc értéke nem felel meg egy pont szerkezetének.
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");
}
}
}
}
A kimenet a következő:
az életkor: 17 év 9 hónap 5 nap
2.SimpleDateFormat Parse() metódus
A SimpleDateFormat egy osztály, amelyet a dátumok nyelv- és területérzékeny módon történő formázására és elemzésére használnak. A SimpleDateFormat parse() metódus lebontja a karakterláncot dátum tokenekre, és a megfelelő formátumban adja vissza a Data értéket. A metódus a karakterlánc elemzését egy fejlesztő által meghatározott indexen kezdi meg. Ez a SimpleDateFormat parse() szintaxisa :
public Date parse(String the_text, ParsePosition position)
A módszernek két paramétere van:
- Position: a kezdő indexben lévő adatok, amelyek mindig a ParsePosition objektumtípus.
- the_text: azt a karakterláncot határozza meg, amelyet a metódus elemezni fog, és egy String típusú érték.
// 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);
}
}
A kimenet a következő:
szerda október 14. 00:00:00 EEST 2020 szerda október 14 00:00:00 EEST 2020 szerda október 14 00:00:00 EEST 2020 vasárnap október 04 00:00:00 EEST 2020 null
Az utolsó nulla, mert nincs dátumminta az 5. pozíciótól kezdve. Egyébként, ha megpróbálja elemezni a dátumot5 pozíció nélkül, például Date date5 = simpleDateFormat2.parse(myString) , akkor kivételt kap:
Kivétel a "main" szálban java.text.ParseException: Nem értelmezhető dátum: "itt a dátum: 14/010/2020" itt: java.base/java.text.DateFormat.parse(DateFormat.java:396) itt: ParseDemo2.main (ParseDemo2.java:22)
3. LocalDate parse() metódus
A LocalDate egy olyan osztály, amely a Java 8-ban jelent meg, és olyan dátumot jelent, mint az év-hónap-nap (az év napja, a hét napja és az év hete is elérhető). A LocalDate nem jelent időt vagy időzónát. A LocalDate parse() metódusnak két változata van. Mindkettő segít átalakítani egy karakterláncot egy új Java 8 dátum API-vá – java.time.LocalDate .elemzés (CharSequence szöveg, DateTimeFormatter, formázó)
Ez a módszer egy karakterláncot elemez egy adott formázó segítségével, hogy megkapja a LocalDate példányát. Íme a módszer szintaxisa:
public static LocalTime parse(CharSequence text,
DateTimeFormatter formatter)
A módszernek két paramétere van: az elemezni kívánt szöveg és a fejlesztő által alkalmazott formázó. Visszatérési értékként a metódus egy LocalTime objektumot ad vissza, amelyet a rendszer helyi napidőként ismer fel. Ha a szöveges érték nem ment át az elemzésen, a rendszer a DayTimeParseException kivételt dobja. Vegyünk egy kódpéldát a LocalDate parse() használatára két paraméterrel:
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));
}
}
A kimenet a következő:
elemzett helyi dátum: 2020-10-14 formázott helyi dátum: 2020.10.14.
Egy paraméterrel rendelkező LocalDate parse() metódus a következő szintaxissal rendelkezik:
public static LocalTime parse(CharSequence text)
Ez a módszer nem igényel formázó megadását. Miután a fejlesztő beírja a karakterlánc-értékeket a zárójelbe, a rendszer automatikusan a DateTimeFormatter.ISO_LOCAL_DATE értéket fogja használni. Ennek a metódusnak egyetlen paramétere van – egy CharSequence szöveg. Itt használhatja a karakterlánc értékét. Győződjön meg arról, hogy nem nulla, és tiszteletben tartja a formázó szerkezetét. Ha nincs mód egy karakterlánc elemzésére, a fejlesztő megkapja a DateTimeExceptionAlert figyelmeztetést. Íme egy példa a LocalDate parse() alkalmazásra:
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);
}
}
A kimenet a következő:
HelyiDátum: 2020-10-14
4. LocalDateTime parse() metódus
A LocalDateTime egy dátum-idő objektum, amely egy dátum-időt reprezentál, amelyet gyakran év-hónap-nap-óra-perc-másodpercként tekintenek meg. A fejlesztők más dátum- és időmezőket is használhatnak (az év napja, a hét napja és az év hete). Ez az osztály változhatatlan. Az idő nanoszekundumos pontossággal van ábrázolva. Például eltárolhatja a „2020. november 17., 13:30.30.123456789” értéket a LocalDateTime-ban. Ez az osztály nem egy időzóna ábrázolásáról szól. Inkább egy szabványos dátumábrázolás plusz a helyi idő. A LocalDateTime parse() metódus két változatban ábrázolva:- static LocalDateTime parse (CharSequence text) a LocalDateTime egy példányát adja vissza egy szöveges karakterláncból, például 2007-12-03T10:15:30.
- statikus LocalDateTime elemzés (CharSequence szöveg, DateTimeFormatter formázó) a LocalDateTime egy példányát adja vissza egy szöveges karakterláncból egy adott formázó használatával.
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);
}
}
A kimenet a következő:
HelyiDátumIdő: 2020-11-17T19:34:50.630
5. ZonedDateTime parse() metódus
A ZonedDateTime osztály egy dátum-időt jelent időzónával. Ez az osztály változhatatlan. A dátum- és időmezőket nanomásodperces pontossággal, valamint egy időzónát tárol, zónaeltolásokkal, amelyek a kétértelmű helyi dátum-időket kezelik. Tehát ha meg kell tartania egy értéket, például „2020. október 14. 17:50.30.123456789 +02:00 az európai/párizsi időzónában”, használhatja a ZonedDateTime-ot. Az osztályt gyakran használják a helyi időalapú adatok manipulálására. A ZondeDateTime parse() egy elemző, amely a karakterláncot tokenekre bontja az ISO-8061 rendszerben. Íme egy példa az elemzés után kapott értékre:
2020-04-05T13:30:25+01:00 Európa/Róma
Akkor használatos, amikor nagy pontosságú adatokra van szükség (végül is a kapott adatok nanoszekundumig pontosak). Az osztályt gyakran használják a helyi időalapú adatok manipulálására. Vessünk egy pillantást a ZonedDateTime parse() metódus általános szintaxisára, amelyet a fejlesztők használnak a karakterláncok értékeinek ZonedDateTime osztályba való konvertálására.
public static ZonedDateTime parse(CharSequence text)
A metódus egyetlen paramétere egy karakterlánc. Visszatérési értékként ZonedDateTime formátumú objektumok egy vagy sorozatát kapja meg. Ha hiba történik az elemzés során, vagy ez lehetetlen, akkor a metódus a DateTimeParseException értéket adja vissza. Van egy parse() metódus is, két változóval.
public static ZonedDateTime parse(CharSequence text, DateFormatter formatter)
Ez a módszer a ZonedDateTime egy példányát szöveges értékből szerzi be egy adott formázó segítségével. Alapértelmezés szerint az egyparaméteres metódust, a DateTimeFormatter.ISO_LOCAL_TIME formázót használják. Vessünk egy pillantást a ZonedDateTime parse() használati esetére:
// 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);
}
}
A kimenet a következő:
2020-10-15T10:15:30+01:00 2020-10-15T13:30:25+01:00
6. LocalTime parse() metódus
A Helyi idő osztály egy időt jelöl, amelyet gyakran óra-perc-másodpercként tekintenek. Ez az osztály is megváltoztathatatlan, például a ZonedDateTime.Time nanoszekundumos pontossággal van ábrázolva. Például a „13:45.30.123456789” érték eltárolható a LocalTime-ban. Két LocalTime parse() metódus létezik , egy és két paraméterrel. Nézzük mindkettőt:
public static LocalTime parse(CharSequence text)
A LocalTime parse()-t csak egy paraméterrel használhatja , az elemezni kívánt karakterlánccal. Ebben az esetben alapértelmezés szerint a DateTimeFormatter.ISO_LOCAL_TIME formátumot használja.
Method with two parameters has the next syntax:
public static LocalTime parse(CharSequence text,
DateTimeFormatter formatter)
Lekéri a LocalTime példányát egy szöveges értékből egy adott formázó segítségével. Mindkét módszer a LocalTime értéket adja vissza óó/mm/mp formátumban. Vigyázzon a DateTimeParceException riasztásokra. Ezek azt jelentik, hogy a karakterlánc szövegének formátuma nem egyezik meg a LocalTime objektumok formátumával. Íme egy példa a LocalTime parse() használatára az éles környezetben:
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() metódus
A MessageFormat kiterjeszti a Format osztályt. A Format egy absztrakt alaposztály a területi beállításokra érzékeny adatok (dátumok, üzenetek és számok) formázására. A MessageFormat beszerez néhány objektumot, és formázza azokat. Ezután a megfelelő helyeken beszúrja a formázott karakterláncokat a mintába. A MessageFormat parse() karakterlánc-értéket kap, ha adott az index kezdete. Íme a módszer általános szintaxisa:
public Object[] parse(String source, ParsePosition position)
Ahol a forrás egy értelmezendő karakterlánc, a pozíció pedig az elemzés kezdő indexe. Íme egy példa a MessageFormat parse() metódus működésére:
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() metódus
Amikor egy programozó naplózót használ egy üzenet naplózására, az egy bizonyos naplózási szinttel kerül naplózásra. Hét beépített naplószint van:- SZIGORÚ
- FIGYELEM
- INFO
- CONFIG
- BÍRSÁG
- FINOMBB
- LEGJOBB
public static Level parse(String name)
A metódus paramétere a fejlesztő által elemezni kívánt karakterlánc neve. Ez lehet a szint neve, inicializáló neve vagy más egész szám. Cserébe a programozó egy Level name értéket kap, amely megfelel a kezdeti karakterlánc értékének. Ha az argumentum olyan szimbólumokat tartalmaz, amelyeket nem lehet elemezni, a rendszer az IllegalArgumentException kivételt dobja. Ha egy karakterlánc nem tartalmaz értékeket, a fejlesztő NullPointerException-t kap. Íme egy kódrészlet, amely bemutatja a Level parse() megvalósítását .
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());
}
}
A kimenet a következő:
Szint = FINE Szint = FINE KI
9. Azonnali parse() metódus
Az azonnali osztály egyetlen pillanatnyi pontot modellez az idővonalon. Használhatja eseményidőbélyegek rögzítésére az alkalmazásban. Az Instant parse() azonnali értéket kap egy szöveges értékből. A karakterlánc később UTC időzóna értékként kerül tárolásra. A rendszer a DateTimeFormatter.ISO_INSTANT fájlt használja, például 2020-10-14T11:28:15.00Z. Íme az Instant parse() metódus szintaxisa:
public static Instant parse(CharSequence text)
Egy karakterlánc elemzéséhez és azonnali megjelenítéséhez a fejlesztőnek meg kell győződnie arról, hogy a karakterlánc tartalmaz-e szöveget. Abban az esetben, ha ez nulla, DateTimeException kivételt kap. Íme egy példa az Instant parse használatára Java-ban:
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);
}
}
A kimenet a következő:
2020-10-14T10:37:30Z
10. NumberFormat parse() metódus
A java.text.NumberFormat osztály a számok formázására szolgál. A NumberFormat parse() az osztály alapértelmezett metódusa. A NumberFormat osztály parse () metódusa egy karakterláncot számmá alakít. A fejlesztők arra használják, hogy lebontsák a karakterláncot a komponensszámokra. Az elemzés a karakterlánc elejétől kezdődik. Ha a következő példában látható módon a setParseIntegerOnly (true) függvényt a parse () metódus meghívása előtt hívja meg , akkor a számnak csak az egész része konvertálódik. Íme a NumberFormat parse() szintaxisa :
public Number parse(String str)
Paraméterként a függvény karakterláncokat fogad el. Az elemzés visszatérési értéke egy numerikus érték. Ha egy karakterlánc kezdete nem értelmezhető, ParseException figyelmeztetést kap. A NumberFormat parse() metódus alkalmazásának megtekintéséhez vessen egy pillantást az alábbi példára:
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"));
}
}
A kimenet a következő:
3,141592 3
GO TO FULL VERSION