CodeGym /Java Blogu /Rastgele /Örneklerle Java'da 11 parse() yöntemi
John Squirrels
Seviye
San Francisco

Örneklerle Java'da 11 parse() yöntemi

grupta yayınlandı
Ayrıştırma, en genel anlamıyla, çoğu zaman metinsel veriler olmak üzere, bir veri parçasından gerekli bilgilerin çıkarılmasıdır. Java'da ayrıştırma nedir? parse() yöntemine sahip birçok Java sınıfı vardır . Genellikle parse() yöntemi girdi olarak bir dizi dize alır, ondan gerekli bilgileri "çıkarır" ve onu çağıran sınıfın bir nesnesine dönüştürür. Örneğin, bir dize aldı ve bu dizide "gizlenen" tarihi döndürdü. Bu gönderide, parse() öğesinin 10 kullanışlı varyasyonuna bir göz atacağız .

0.parseInt()

En popüler parse() yöntemlerinden birinden başlayalım , bu tam olarak parse() değil , parseInt() yöntemidir . Java parseInt() yöntemi, belirli bir diziden ilkel veri türünü almak için kullanılır. Başka bir deyişle, bir diziyi bir sayıya dönüştürür. parseInt() bir veya iki bağımsız değişkene sahip olabilir. İşte parseInt() sözdizimi :

static int parseInt(String s)
static int parseInt(String s, int radix)
Burada s, işaretli bir ondalık değeri ve sayısal bir sistemin tabanını temsil eden dizedir. Varsayılan bir temel değer olmadığını unutmayın; 2 ile 36 arasında bir değer girmeniz gerekir. İşte bir örnek. ParseInt() ile nasıl ayrıştırılır:

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));
         
       }
   }
Çıktı:
12 12.0 4 65

1. Dönem ayrıştırma() yöntemi

Dönem, “3 yıl, 5 ay ve 2 gün” gibi bir zaman miktarını yıl, ay ve gün cinsinden modellemek için bir Java sınıfıdır. Bir metinden bir nokta elde etmek için bir parse() yöntemi vardır . İşte dönem ayrıştırma() sözdizimi

public static Period parse(CharSequence text)
CharSequence, Dizeler tarafından uygulanan bir Arayüzdür. Böylece, dizeleri parse() yönteminde bir metin öğesi olarak kullanabilirsiniz . Dizenin, Period sınıfından bir nesne döndürmek için uygun biçimde olması gerektiğinden emin olun. Bu biçim PnYnMnD'dir . Y'nin "yıl", M - "ay", D - "gün" anlamına geldiği yerde. N, her dönem değerine karşılık gelen bir sayıdır.
  • Yöntemin bir parametresi vardır — bir metin değeri.
  • Parse(), bir dizenin değerinin bir parametreye dönüştüğü bir Dönem değeri döndürür.
  • Bir istisna olarak, dize değeri bir dönemin yapısını karşılamıyorsa, period parse() DateTimeParseException döndürebilir.
İşte gerçek dünya bağlamında Period parse() kullanımına bir örnek:

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");
   }
}
	} 
} 
Çıktı:
yaş: 17 Yıl 9 Ay 5 Gün

2.SimpleDateFormat Parse() yöntemi

SimpleDateFormat, tarihleri ​​yerel ayara duyarlı bir şekilde biçimlendirmek ve ayrıştırmak için kullanılan bir sınıftır. SimpleDateFormat parse() yöntemi, bir dizeyi tarih belirteçlerine böler ve karşılık gelen biçimde bir Veri değeri döndürür. Yöntem, dizgiyi bir geliştirici tarafından tanımlanan bir dizinde ayrıştırmaya başlar. Bu , SimpleDateFormat parse() öğesinin sözdizimidir :

public Date parse(String the_text, ParsePosition position)
Yöntemin iki parametresi vardır:
  • Konum: Her zaman ParsePosition nesne türü olan başlangıç ​​dizinindeki veriler.
  • the_text: yöntemin ayrıştıracağı dizeyi tanımlar ve bir String türü değerdir.
Bu yöntemi konum bildirimi olmadan kullanabilirsiniz. Bu durumda veriler sıfır dizinden başlar. SimpleDateFormat parse(), bir tarih veya boş değer döndürür (dizenin bir hata nedeniyle işlenmemesi durumunda). İşte SimpleDateFormat parse() uygulamasının bir örneği:

// 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);
   }
}
Çıktı:
14 Ekim Çar 00:00:00 EEST 2020 14 Ekim Çar 00:00:00 EEST 2020 14 Ekim Çar 00:00:00 EEST 2020 Paz 04 Ekim 00:00:00 EEST 2020 null
Sonuncusu boş çünkü 5. konumdan başlayan bir tarih kalıbı yok. Bu arada , date5'i Date date5 = simpleDateFormat2.parse(myString) gibi konum olmadan ayrıştırmaya çalışırsanız , bir istisna alırsınız:
"Main" java.text.ParseException iş parçacığında istisna: ParseDemo2.main'de java.base/java.text.DateFormat.parse(DateFormat.java:396) adresindeki "işte tarih: 14/010/2020" ayrıştırılamayan tarih (ParseDemo2.java:22)

3. LocalDate ayrıştırma() yöntemi

LocalDate, Java 8'de yıl-ay-gün gibi bir tarihi temsil etmek için görünen bir sınıftır (yılın günü, haftanın günü ve yılın haftasına da erişilebilir). LocalDate bir saati veya saat dilimini temsil etmez. LocalDate parse() yönteminin iki çeşidi vardır. Her ikisi de bir dizeyi yeni bir Java 8 tarih API'sine dönüştürmeye yardımcı olur — java.time.LocalDate .

ayrıştır (CharSequence metni, DateTimeFormatter, biçimlendirici)

Bu yöntem, bir LocalDate örneğini elde etmek için belirli bir biçimlendirici kullanarak bir dizeyi ayrıştırır. İşte yöntemin sözdizimi:

public static LocalTime parse(CharSequence text,
                              DateTimeFormatter formatter)
Yöntem için iki parametre vardır — ayrıştırılacak metin ve bir geliştiricinin uygulayacağı biçimlendirici. Yöntem, dönüş değeri olarak, yerel gündüz saati olarak tanınacak bir LocalTime nesnesi döndürür. Metin değeri ayrıştırmadan geçemezse, sistem DayTimeParseException hatası verir. LocalDate parse() işlevini iki parametreyle kullanmanın bir kod örneğine sahip olalım :

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));
   }
}
Çıktı:
ayrıştırılmış yerel tarih: 2020-10-14 biçimlendirilmiş yerel tarih: 14/10/2020
Bir parametreli LocalDate parse() yöntemi şu sözdizimine sahiptir:

public static LocalTime parse(CharSequence text)
Bu yöntem, bir biçimlendirici belirtmeyi gerektirmez. Bir geliştirici dize değerlerini parantez içine girdikten sonra, sistem otomatik olarak DateTimeFormatter.ISO_LOCAL_DATE değerini kullanacaktır. Bu yöntemin tek bir parametresi vardır — bir CharSequence metni. Burada dize değerini kullanabilirsiniz. Boş olmadığından ve biçimlendiricinin yapısına uygun olduğundan emin olun. Bir dizeyi ayrıştırmanın bir yolu yoksa, bir geliştirici DateTimeExceptionAlert'ı alır. İşte LocalDate parse() uygulamasının bir örneği:

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);
       }
   }
Çıktı:
YerelTarih : 2020-10-14

4. LocalDateTime parse() yöntemi

LocalDateTime, genellikle yıl-ay-gün-saat-dakika-saniye olarak görüntülenen bir tarih-zamanı temsil eden bir tarih-saat nesnesi. Ayrıca geliştiriciler diğer tarih ve saat alanlarını (yılın günü, haftanın günü ve yılın haftası) kullanabilir. Bu sınıf değişmez. Zaman, nanosaniye hassasiyetle temsil edilir. Örneğin, "17 Kasım 2020, 13:30.30.123456789" değerini bir LocalDateTime içinde saklayabilirsiniz. Bu sınıf, bir saat dilimini temsil etmekle ilgili değildir. Daha ziyade standart bir tarih gösterimi artı yerel saattir. LocalDateTime parse() yöntemi iki varyantta temsil edilir:
  • static LocalDateTime parse(CharSequence text), 2007-12-03T10:15:30 gibi bir metin dizesinden LocalDateTime örneğini döndürür.
  • static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter), belirli bir formatlayıcı kullanan bir metin dizesinden LocalDateTime örneğini döndürür.
İşte LocalDateTime parse() yönteminin bir örneği:

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);
       }
   }
Çıktı:
LocalDateTime is: 2020-11-17T19:34:50.630

5. ZonedDateTime ayrıştırma() yöntemi

Class ZonedDateTime, saat dilimli bir tarih-zamanı temsil eder. Bu sınıf değişmez. Tarih ve saat alanlarını nanosaniye hassasiyetinde ve belirsiz yerel tarih-saatleri işlemek için kullanılan bir bölge ofseti ile bir saat diliminde depolar. Dolayısıyla "14 Ekim 2020 Avrupa/Paris saat diliminde 17:50.30.123456789 +02:00" gibi bir değer tutmanız gerekiyorsa ZonedDateTime kullanabilirsiniz. Sınıf genellikle yerel zamana dayalı verileri işlemek için kullanılır. ZondeDateTime parse(), ISO-8061 sisteminde dizeyi belirteçlere bölen bir ayrıştırıcıdır. Ayrıştırdıktan sonra alacağınız değere bir örnek:
2020-04-05T13:30:25+01:00 Avrupa/Roma
Yüksek hassasiyetli verilere ihtiyaç duyulduğunda kullanılır (sonuçta, elde ettiğiniz veriler nanosaniyelere kadar kesindir). Sınıf genellikle yerel zamana dayalı verileri işlemek için kullanılır. Geliştiricilerin dize değerlerini ZonedDateTime sınıfına dönüştürmek için kullandıkları ZonedDateTime parse() yönteminin genel sözdizimine bir göz atalım .

public static ZonedDateTime parse(CharSequence text)
Yöntemin kullandığı tek parametre bir dize metnidir. Dönüş değeri olarak, ZonedDateTime biçiminde bir veya bir dizi nesne alırsınız. Ayrıştırma sırasında bir hata olursa veya bu mümkün değilse, başlangıçta yöntem DateTimeParseException döndürür. Ayrıca iki değişkenli bir parse() yöntemi vardır .

public static ZonedDateTime parse(CharSequence text, DateFormatter formatter)
Bu yöntem, belirli bir biçimlendirici kullanarak bir metin değerinden ZonedDateTime örneğini alır. Tek parametreli yöntem, DateTimeFormatter.ISO_LOCAL_TIME biçimlendirici varsayılan olarak kullanılır. ZonedDateTime parse() için kullanım durumuna bir göz atalım:

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

6. LocalTime parse() yöntemi

Class LocalTime , genellikle saat-dakika-saniye olarak görüntülenen bir zamanı temsil eder. Bu sınıf aynı zamanda sabittir, örneğin ZonedDateTime.Time nanosaniye hassasiyetle temsil edilir. Örneğin, "13:45.30.123456789" değeri bir LocalTime içinde saklanabilir. Bir ve iki parametreli iki LocalTime parse() yöntemi vardır . İkisine de bir göz atalım:

public static LocalTime parse(CharSequence text)
LocalTime parse() öğesini yalnızca bir parametreyle, ayrıştırmak istediğiniz dizeyle kullanabilirsiniz . Bu durumda, varsayılan olarak DateTimeFormatter.ISO_LOCAL_TIME biçimlendiricisi kullanılır.

Method with two parameters has the next syntax: 
public static LocalTime parse(CharSequence text,
                              DateTimeFormatter formatter)
Belirli bir biçimlendirici kullanarak bir metin değerinden LocalTime örneğini alır. Her iki yöntem de LocalTime değerini ss/mm/ss biçiminde döndürür. DateTimeParceException uyarılarına dikkat edin. Bunlar, dize metninin biçiminin LocalTime nesnelerinin biçimine karşılık gelmediği anlamına gelir. İşte üretimde LocalTime parse() kullanımına bir örnek:

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() yöntemi

MessageFormat, Format sınıfını genişletir. Biçim, yerel ayara duyarlı verileri (tarihler, mesajlar ve sayılar) biçimlendirmek için soyut bir temel sınıftır. MessageFormat bazı nesneleri alır ve onları biçimlendirir. Daha sonra biçimlendirilmiş dizileri uygun yerlere kalıba ekler. MessageFormat parse(), dizin başlangıcı verilirse bir dize değeri almak için kullanılır. Yöntemin genel sözdizimi şöyledir:

public Object[] parse(String source, ParsePosition position)
burada kaynak ayrıştırılacak bir dizedir ve konum ayrıştırmanın başlangıç ​​dizinidir. İşte çalışan bir MessageFormat parse() yöntemi örneği:

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. Seviye ayrıştırma() yöntemi

Bir programcı bir mesajı günlüğe kaydetmek için bir Kaydedici kullandığında, belirli bir günlük düzeyiyle günlüğe kaydedilir. Yedi yerleşik günlük düzeyi vardır:
  • HAŞİN
  • UYARI
  • BİLGİ
  • YAPILANDIRMA
  • İYİ
  • DAHA İNCE
  • EN İYİ
Ayrıca günlüğe kaydetmeyi kapatmak için kullanılabilecek ek KAPALI seviyeleri ve tüm mesajların günlüğe kaydedilmesini sağlamak için kullanılabilecek TÜMÜ vardır. Günlük düzeyi, java.util.logging.Level sınıfı tarafından temsil edilir . Düzey sınıfı, bu yedi düzeyin her biri için bir sabit içerir. Böylece, bir Logger'a mesaj kaydederken All ve OFF dahil olmak üzere bu sabitlerden birini kullanırsınız. Ayrıca tüm bu seviyeler bazı tamsayılara başlatıldı. Örneğin FINE, 500 olarak başlatılır. Level parse() yöntemi, bir metin değerinden gereken bilgiyi ayrıştırır ve bir Level nesnesi döndürür. İşte level parse() yönteminin sözdizimi :

public static Level parse(String name)
Bir yöntemin parametresi, bir geliştiricinin ayrıştırmak istediği bir dizenin adıdır. Düzeyin adı, başlangıç ​​adı veya başka bir tamsayı olabilir. Buna karşılık, bir programcı, ilk dizeninkine karşılık gelen bir Düzey adı değeri alır. Bağımsız değişkenin ayrıştırılması imkansız semboller içermesi durumunda, sistem IllegalArgumentException'ı atar. Bir dize değer içermiyorsa, geliştirici bir NullPointerException alır. İşte Level parse() 'nin uygulanmasını gösteren bir kod parçası .

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());
   }
}
Çıktı:
Seviye = HASSAS Seviye = HASSAS KAPALI

9. Anında ayrıştırma() yöntemi

Anında sınıf, zaman çizgisinde tek bir anlık noktayı modeller. Uygulamanızda etkinlik zaman damgalarını kaydetmek için kullanabilirsiniz. Instant parse(), bir metin değerinden bir Instant değeri alır. Dize daha sonra bir UTC Saat Dilimi Değeri olarak saklanacaktır. Sistem, 2020-10-14T11:28:15.00Z gibi DateTimeFormatter.ISO_INSTANT'ı kullanır. İşte Instant parse() yönteminin bir sözdizimi:

public static Instant parse(CharSequence text)
Bir dizgiyi ayrıştırmak ve anında almak için, bir geliştiricinin dizgenin bir miktar metin içerdiğinden emin olması gerekir. Boş olması durumunda, bir DateTimeException alırsınız. Java'da Anında ayrıştırmayı kullanmanın bir örneğini burada bulabilirsiniz :

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);
       }
   }
Çıktı:
2020-10-14T10:37:30Z

10. NumberFormat parse() yöntemi

Java.text.NumberFormat sınıfı , sayıları biçimlendirmek için kullanılır. NumberFormat parse(), bu sınıfın varsayılan yöntemidir. NumberFormat sınıfının parse () yöntemi, bir dizeyi sayıya dönüştürür. Geliştiriciler, bir dizeyi bileşen numaralarına bölmek için kullanır. Ayrıştırma dizenin başından başlar. Aşağıdaki örnekte gösterildiği gibi parse() yöntemini çağırmadan önce setParseIntegerOnly (true) öğesini çağırırsanız , sayının yalnızca tamsayı kısmı dönüştürülür. NumberFormat parse() söz dizimi şöyledir :

public Number parse(String str)
İşlev, parametre olarak dizeleri kabul eder. Ayrıştırmanın dönüş değeri sayısal bir değerdir. Bir dize başlangıcı ayrıştırılamazsa, bir ParseException uyarısı alırsınız. NumberFormat parse() yönteminin uygulamasını görmek için aşağıdaki örneğe bakın:

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"));
       }
   }
Çıktı:
3.141592 3

Çözüm

Geliştiricilerin dizeleri çeşitli veri türlerine dönüştürmek için kullanabileceği pek çok ayrıştırma yöntemi vardır. Bunları hatırlamak sıkıcı görünse de, bu kadar çeşitli komutlar geliştiricilere çok fazla esneklik ve kesinlik sağlar. Sözdizimini hatırladığınızdan ve her yöntem için hangi parametrelerin gerekli olduğunu unutmadığınızdan emin olmak için veri ayrıştırmayı kullanma alıştırması yaptığınızdan emin olun.
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION