CodeGym /Blog Jawa /Acak /11 parse () cara ing Jawa karo Conto
John Squirrels
tingkat
San Francisco

11 parse () cara ing Jawa karo Conto

Diterbitake ing grup
Parsing ing pangertèn sing paling umum yaiku ekstraksi informasi sing dibutuhake saka sawetara data, paling asring data teks. Apa sing diarani parse ing basa Jawa? Ana akeh kelas Jawa sing duwe metode parse () . Biasane parse () cara nampa sawetara senar minangka input, "extracts" informasi sing perlu saka iku lan Ngonversi menyang obyek saka kelas nelpon. Contone, nampa senar lan bali tanggal sing "ndhelikake" ing senar iki. Ing kirim iki, kita bakal njupuk dipikir ing 10 variasi migunani parse () .

0. parseInt()

Ayo dadi miwiti saka salah siji saka paling populer parse () cara, sing ora persis parse () , nanging parseInt () . Cara Java parseInt () digunakake kanggo njupuk jinis data primitif saka string tartamtu. Ing tembung liyane, iku ngowahi senar kanggo nomer. parseInt () bisa duwe siji utawa loro argumen. Punika sintaks parseInt() :

static int parseInt(String s)
static int parseInt(String s, int radix)
Where s iku senar makili nilai desimal mlebu lan radix basis saka sistem numerik. Elinga yen ora ana nilai dhasar standar — sampeyan kudu ngetik siji ing kisaran 2 lan 36. Iki contone. Cara ngurai nganggo 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));
         
       }
   }
Outpute yaiku:
12 12.0 4 65

1. Periode parse () metode

Periode minangka kelas Jawa kanggo model jumlah wektu ing taun, sasi lan dina kayata "3 taun, 5 sasi lan 2 dina". Wis cara parse () kanggo njupuk titik saka teks. Punika sintaks period parse()

public static Period parse(CharSequence text)
CharSequence minangka Antarmuka, diimplementasikake dening Strings. Supaya sampeyan bisa nggunakake Strings minangka unsur teks ing parse () cara. Manawa senar kudu ing format sing tepat kanggo ngasilake obyek saka kelas Periode. Format iki PnYnMnD . Ing ngendi Y tegese "taun", M - kanggo "sasi", D - kanggo "dina". N minangka angka sing cocog karo saben nilai periode.
  • Cara kasebut nduweni siji parameter - nilai teks.
  • Parse () ngasilake nilai Periode ing ngendi nilai string dadi parameter.
  • Minangka pangecualian, periode parse () bisa ngasilake DateTimeParseException yen nilai string ora ketemu struktur periode.
Iki conto nggunakake Period parse () ing konteks donya nyata:

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");
   }
}
	} 
} 
Outpute yaiku:
umur iku: 17 Taun 9 Sasi 5 Dina

2.SimpleDateFormat Parse() metode

SimpleDateFormat minangka kelas sing digunakake kanggo format lan parsing tanggal kanthi cara sing sensitif lokal. SimpleDateFormat parse () cara ngilangi senar mudhun dadi token tanggal lan ngasilake nilai Data ing format sing cocog. Cara kasebut wiwit ngurai senar ing indeks, sing ditetepake dening pangembang. Iki minangka sintaks saka SimpleDateFormat parse() :

public Date parse(String the_text, ParsePosition position)
Cara kasebut nduweni rong paramèter:
  • Posisi: data ing indeks wiwitan sing tansah jinis obyek ParsePosition.
  • the_text: nemtokake senar sing cara kasebut bakal diurai lan minangka nilai jinis String.
Sampeyan bisa nggunakake cara iki tanpa deklarasi posisi. Ing kasus iki, data diwiwiti saka indeks nol. SimpleDateFormat parse () ngasilake tanggal utawa nilai null (yen string ora diproses amarga ana kesalahan). Punika conto implementasi 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);
   }
}
Outpute yaiku:
Rebo 14 Oktober 00:00:00 EEST 2020 Rebo 14 Oktober 00:00:00 EEST 2020 Rebo 14 Oktober 00:00:00 EEST 2020 Sun 04 Oktober 00:00:00 EEST 2020 null
Sing pungkasan iku null amarga ora ana pola tanggal wiwit saka posisi 5th. Yen sampeyan nyoba ngurai date5 tanpa posisi kayata Date date5 = simpleDateFormat2.parse(myString) , sampeyan bakal entuk pangecualian:
Pengecualian ing thread "utama" java.text.ParseException: Tanggal sing ora bisa dideleng: "kene tanggal: 14/010/2020" ing java.base/java.text.DateFormat.parse(DateFormat.java:396) ing ParseDemo2.main (ParseDemo2.java:22)

3. metode parse LocalDate ().

LocalDate minangka kelas sing muncul ing Jawa 8 kanggo makili tanggal kayata taun-wulan-dina (dina-taun, dina-minggu lan minggu-taun, uga bisa diakses). LocalDate ora nggambarake wektu utawa zona wektu. LocalDate parse () cara duwe rong varian. Loro-lorone mbantu ngowahi senar dadi API tanggal 8 Java anyar — java.time.LocalDate .

parse (Teks CharSequence, DateTimeFormatter, formatter)

Cara iki ngurai senar nggunakake formatter tartamtu kanggo entuk conto LocalDate. Mangkene sintaks metode kasebut:

public static LocalTime parse(CharSequence text,
                              DateTimeFormatter formatter)
Ana rong paramèter kanggo cara - teks sing bakal diurai lan formatter sing bakal ditrapake pangembang. Minangka nilai bali, cara ngasilake obyek LocalTime sing bakal diakoni minangka dina-dina lokal. Yen nilai teks ora bisa liwat parsing, sistem mbuwang DayTimeParseException. Ayo duwe conto kode nggunakake LocalDate parse () karo rong paramèter:

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));
   }
}
Outpute yaiku:
tanggal lokal sing diurai: 2020-10-14 tanggal lokal sing diformat: 14/10/2020
LocalDate parse() metode karo siji parameter nduweni sintaks sabanjure:

public static LocalTime parse(CharSequence text)
Cara iki ora mbutuhake nemtokake formatter. Sawise pangembang ngetik nilai string menyang kurung, sistem bakal kanthi otomatis nggunakake DateTimeFormatter.ISO_LOCAL_DATE. Cara iki nduweni parameter siji - teks CharSequence. Sampeyan bisa nggunakake kene nilai string. Priksa manawa ora null lan ngormati struktur formatter. Yen ora ana cara kanggo ngurai string, pangembang entuk DateTimeExceptionAlert. Iki conto aplikasi 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);
       }
   }
Outpute yaiku:
Tanggal Lokal: 2020-10-14

4. LocalDateTime parse () cara

LocalDateTime obyek tanggal-wektu sing makili tanggal-wektu katon cukup asring minangka taun-sasi-dina-jam-menit-detik. Uga pangembang bisa nggunakake lapangan tanggal lan wektu liyane (dina-taun, dina-minggu lan minggu-taun). Kelas iki ora bisa diganti. Wektu dituduhake kanthi presisi nanodetik. Contone, sampeyan bisa nyimpen nilai "17 November 2020 ing 13:30.30.123456789" ing LocalDateTime. Kelas iki dudu babagan makili zona wektu. Iku rodo perwakilan tanggal standar plus wektu lokal. LocalDateTime parse() cara diwakili ing rong varian:
  • parse LocalDateTime statis (teks CharSequence) ngasilake conto LocalDateTime saka string teks kayata 2007-12-03T10:15:30.
  • parse LocalDateTime statis (teks CharSequence, formatter DateTimeFormatter) ngasilake conto LocalDateTime saka string teks nggunakake formatter tartamtu.
Iki minangka conto metode parse LocalDateTime () :

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);
       }
   }
Outpute yaiku:
Tanggal Lokal: 2020-11-17T19:34:50.630

5. ZonedDateTime parse () cara

Kelas ZonedDateTime nggambarake tanggal-wektu kanthi zona wektu. Kelas iki ora bisa diganti. Iki nyimpen lapangan tanggal lan wektu kanthi presisi nanodetik, lan zona wektu, kanthi offset zona sing digunakake kanggo nangani tanggal-tanggal lokal sing ambigu. Dadi yen sampeyan kudu nyimpen nilai kayata "14 Oktober 2020 ing 17:50.30.123456789 +02:00 ing zona wektu Eropa/Paris" sampeyan bisa nggunakake ZonedDateTime. Kelas kasebut asring digunakake kanggo ngapusi data adhedhasar wektu lokal. ZondeDateTime parse () punika parser sing ngilangi senar mudhun menyang token ing sistem ISO-8061. Iki conto nilai sing bakal sampeyan entuk sawise parsing:
05-04-2020T13:30:25+01:00 Eropa/Roma
Iki digunakake nalika data presisi dhuwur dibutuhake (sawise kabeh, data sing sampeyan entuk akurat nganti nanodetik). Kelas kasebut asring digunakake kanggo ngapusi data adhedhasar wektu lokal. Ayo kang njupuk dipikir ing sintaks umum saka ZonedDateTime parse () cara pangembang digunakake kanggo ngowahi nilai string menyang kelas ZonedDateTime.

public static ZonedDateTime parse(CharSequence text)
Parameter mung sing digunakake metode yaiku teks senar. Minangka nilai bali, sampeyan bakal entuk siji utawa seri obyek ing format ZonedDateTime. Yen ana kesalahan sajrone parsing utawa ora mungkin, mula, metode kasebut ngasilake DateTimeParseException. Uga ana cara parse () karo rong variabel.

public static ZonedDateTime parse(CharSequence text, DateFormatter formatter)
Cara iki entuk conto ZonedDateTime saka nilai teks nggunakake formatter tartamtu. Cara karo siji parameter, formatter DateTimeFormatter.ISO_LOCAL_TIME digunakake minangka standar. Ayo goleki kasus panggunaan kanggo parse ZonedDateTime ():

// 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);
   }
}
Outpute yaiku:
15-10-2020T10:15:30+01:00 15-10-2020T13:30:25+01:00

6. LocalTime parse () cara

Class LocalTime nggambarake wektu, asring dideleng minangka jam-menit-detik. Kelas iki uga ora bisa diganti kayata ZonedDateTime.Wektu dituduhake kanthi presisi nanodetik. Contone, nilai "13:45.30.123456789" bisa disimpen ing LocalTime. Ana rong cara LocalTime parse () , karo siji lan loro paramèter. Ayo dipikirake loro:

public static LocalTime parse(CharSequence text)
Sampeyan bisa nggunakake LocalTime parse () karo mung siji parameter, senar sing arep kanggo parse. Ing kasus iki, formatter DateTimeFormatter.ISO_LOCAL_TIME digunakake minangka standar.

Method with two parameters has the next syntax: 
public static LocalTime parse(CharSequence text,
                              DateTimeFormatter formatter)
Iku entuk conto LocalTime saka nilai teks nggunakake formatter tartamtu. Kaloro cara kasebut ngasilake nilai LocalTime ing format hh / mm / ss. Watch metu kanggo DateTimeParceException tandha. Tegese format teks senar ora cocog karo obyek LocalTime. Mangkene conto nggunakake parse LocalTime () ing produksi:

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 () cara

MessageFormat ngluwihi kelas Format. Format minangka kelas dhasar abstrak kanggo ngowahi format data sensitif lokal (tanggal, pesen, lan nomer). MessageFormat entuk sawetara obyek lan format. Banjur nglebokake senar sing diformat menyang pola ing panggonan sing cocog. Parse MessageFormat () digunakake kanggo entuk nilai senar yen diwenehi wiwitan indeks. Mangkene sintaks umum metode kasebut:

public Object[] parse(String source, ParsePosition position)
Ing ngendi sumber minangka string kanggo ngurai lan posisi minangka indeks wiwitan parsing. Iki minangka conto metode parse MessageFormat () sing digunakake:

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. Metode tingkat parse ().

Nalika programmer nggunakake Logger kanggo log pesen bakal mlebu karo tingkat log tartamtu. Ana pitung tingkat log sing dibangun:
  • SARENG
  • WARNING
  • INFO
  • KONFIG
  • nggih
  • luwih apik
  • paling apik
Uga ana level tambahan OFF sing bisa digunakake kanggo mateni logging lan ALL sing bisa digunakake kanggo ngaktifake log kabeh pesen. Tingkat log diwakili dening kelas java.util.logging.Level . Kelas level ngemot konstanta kanggo saben pitung level kasebut. Dadi sampeyan nggunakake salah siji saka konstanta iki, kalebu Kabeh lan OFF nalika mlebu pesen menyang Logger. Uga kabeh tingkat iki initialized kanggo sawetara integer. Contone FINE wis initialized kanggo 500. Level parse () cara parses informasi needed saka Nilai teks lan ngasilake obyek Level. Punika sintaks metode level parse() :

public static Level parse(String name)
Parameter metode yaiku jeneng string sing pengin diurai dening pangembang. Bisa uga jeneng level, jeneng wiwitan utawa sawetara integer liyane. Minangka bali, programmer entuk nilai jeneng Level, sing cocog karo senar awal. Yen argumen kasebut ngemot simbol sing ora bisa diurai, sistem bakal mbuwang IllegalArgumentException. Yen string ora ngemot nilai, pangembang entuk NullPointerException. Punika Piece saka kode sing nuduhake implementasine saka 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());
   }
}
Outpute yaiku:
Level = FINE Level = FINE OFF

9. Metode parse () cepet

Model kelas cepet siji titik instan ing garis wektu. Sampeyan bisa digunakake kanggo ngrekam cap wektu acara ing app sampeyan. Parse cepet () entuk nilai cepet saka nilai teks. String kasebut mengko bakal disimpen minangka Nilai Zona Wektu UTC. Sistem nggunakake DateTimeFormatter.ISO_INSTANT kayata 2020-10-14T11:28:15.00Z. Mangkene sintaks metode parse Instan () :

public static Instant parse(CharSequence text)
Kanggo ngurai string lan entuk cepet, pangembang kudu nggawe manawa string kasebut ngemot sawetara teks. Yen null, sampeyan bakal entuk DateTimeException. Iki conto nggunakake parse Instan ing Jawa:

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);
       }
   }
Outpute yaiku:
2020-10-14T10:37:30Z

10. NumberFormat parse () cara

Kelas java.text.NumberFormat digunakake kanggo format nomer. NumberFormat parse () iku cara standar saka kelas iki. Metode parse () saka kelas NumberFormat ngowahi string dadi nomer. Pangembang digunakake kanggo break senar mudhun kanggo nomer komponen sawijining. Parsing diwiwiti saka wiwitan senar. Yen sampeyan nelpon setParseIntegerOnly (bener) sadurunge nelpon metode parse () , kaya sing dituduhake ing conto ing ngisor iki, banjur mung bagean integer saka nomer sing diowahi. Punika sintaks NumberFormat parse() :

public Number parse(String str)
Minangka parameter, fungsi nampa strings. Nilai bali saka parsing minangka nilai numerik. Yen wiwitan senar ora bisa diurai, sampeyan bakal entuk peringatan ParseException. Kanggo ndeleng aplikasi saka NumberFormat cara parse () , njupuk dipikir ing conto ing ngisor iki:

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"));
       }
   }
Outpute yaiku:
3.141592 3

Kesimpulan

Ana akeh metode parsing sing bisa digunakake para pangembang kanggo ngowahi senar dadi macem-macem jinis data. Sanajan ngelingi bisa uga katon nggegirisi, macem-macem prentah kasebut menehi pangembang akeh keluwesan lan presisi. Dadi manawa kanggo latihan nggunakake parsing data kanggo mesthekake yen sampeyan ngelingi sintaks lan ora bakal lali paramèter sing penting kanggo saben metode.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION