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.
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.
// 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.
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İ
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
GO TO FULL VERSION