Парсирането в най-общия му смисъл е извличането на необходимата информация от някои данни, най-често текстови данни. Какво е парсиране в Java? Има много Java класове, които имат метода parse() . Обикновено методът parse() получава няHowъв низ като вход, "извлича" необходимата информация от него и го преобразува в обект на извикващия клас. Например, получи низ и върна датата, която се „крие“ в този низ. В тази публикация ще разгледаме 10-те полезни варианта на parse() .
0. parseInt()
Нека започнем с един от най-популярните методи parse() , който не е точно parse() , а parseInt() . Методът Java parseInt () се използва за получаване на примитивен тип данни от конкретен низ. С други думи, той преобразува низ в число. parseInt () може да има един or два аргумента. Ето синтаксиса на parseInt() :
static int parseInt(String s)
static int parseInt(String s, int radix)
Където s е низът, представляващ десетична стойност със знак, а основата е основата на числова система. Имайте предвид, че няма базова стойност по подразбиране — трябва да въведете такава в диапазона от 2 до 36. Ето един пример. Как да анализирате с 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));
}
}
Резултатът е:
12 12,0 4 65
1. Метод parse() за период
Периодът е клас на Java за моделиране на количество време по отношение на години, месеци и дни, като например „3 години, 5 месеца и 2 дни“. Има метод parse() за получаване на точка от текст. Ето синтаксиса на period parse()
public static Period parse(CharSequence text)
CharSequence е интерфейс, реализиран от низове. Така че можете да използвате Strings като текстов елемент в метода parse() . Разбира се, че низът трябва да е в правилен формат, за да върне обект от клас Period. Този формат е PnYnMnD . Където Y означава „година“, M — „месец“, D — „ден“. N е число, съответстващо на всяка стойност на периода.
- Методът има един параметър — текстова стойност.
- Parse() връща стойност за период, където стойността на низ става параметър.
- Като изключение period parse() може да върне DateTimeParseException, ако стойността на низа не отговаря на структурата на период.
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");
}
}
}
}
Резултатът е:
възрастта е: 17 години 9 месеца 5 дни
2.SimpleDateFormat Parse() метод
SimpleDateFormat е клас, който се използва за форматиране и анализиране на дати по чувствителен към локала начин. Методът SimpleDateFormat parse() разбива низ на токени за дата и връща стойност на данни в съответния формат. Методът започва анализ на низа от индекс, дефиниран от разработчика. Това е синтаксисът на SimpleDateFormat parse() :
public Date parse(String the_text, ParsePosition position)
Методът има два параметъра:
- Позиция: данните в началния индекс, който винаги е тип обект ParsePosition.
- the_text: дефинира низа, който методът ще анализира и е стойност от тип String.
// 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);
}
}
Резултатът е:
Сряда, 14 октомври 00:00:00 EEST 2020 Сряда, 14 октомври 00:00:00 EEST 2020 Сряда, 14 октомври 00:00:00 EEST 2020 Неделя, 04 октомври 00:00:00 EEST 2020 null
Последният е нулев, защото няма модел на дата, започващ от 5-та позиция. Между другото, ако се опитате да анализирате date5 без позиция като Date date5 = simpleDateFormat2.parse(myString) , ще получите изключение:
Изключение в нишката "main" java.text.ParseException: Unparseable date: "ето я датата: 14/010/2020" в java.base/java.text.DateFormat.parse(DateFormat.java:396) в ParseDemo2.main (ParseDemo2.java:22)
3. Метод на LocalDate parse().
LocalDate е клас, който се появи в Java 8, за да представлява дата като година-месец-ден (ден от годината, ден от седмицата и седмица от годината също могат да бъдат достъпни). LocalDate не представлява време or часова зона. Методът LocalDate parse() има два варианта. И двата помагат за конвертиране на низ в нов API за дата на Java 8 — java.time.LocalDate .разбор (текст на CharSequence, DateTimeFormatter, форматиращ)
Този метод анализира низ с помощта на специфичен форматиращ инструмент, за да получи екземпляр на LocalDate. Ето синтаксиса на метода:
public static LocalTime parse(CharSequence text,
DateTimeFormatter formatter)
Има два параметъра за метода — текстът, който ще бъде анализиран, и форматиращият инструмент, който разработчикът ще приложи. Като върната стойност методът връща обект LocalTime, който ще бъде разпознат като местно дневно време. Ако текстовата стойност не може да премине през анализ, системата хвърля DayTimeParseException. Нека имаме пример за code за използване на LocalDate parse() с два параметъра:
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));
}
}
Резултатът е:
анализирана локална дата: 2020-10-14 форматирана локална дата: 14/10/2020
Методът LocalDate parse() с един параметър има следния синтаксис:
public static LocalTime parse(CharSequence text)
Този метод не изисква указване на форматиращ инструмент. След като разработчикът въведе стойностите на низа в скобите, системата автоматично ще използва DateTimeFormatter.ISO_LOCAL_DATE. Този метод има един параметър — текст на CharSequence. Можете да използвате тук стойността на низа. Уверете се, че не е null и че спазва структурата на формататора. Ако няма начин да се анализира низ, разработчикът получава DateTimeExceptionAlert. Ето пример за приложение на 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);
}
}
Резултатът е:
Местна дата: 2020-10-14
4. LocalDateTime parse() метод
LocalDateTime обект за дата-час, който представлява дата-час, разглеждана доста често като година-месец-ден-час-minutesа-секунда. Също така разработчиците могат да използват други полета за дата и час (ден от годината, ден от седмицата и седмица от годината). Този клас е неизменен. Времето е представено с точност до наносекунди. Например можете да съхраните стойността „17 ноември 2020 г. в 13:30.30.123456789“ в LocalDateTime. Този клас не е за представяне на часова зона. Това е по-скоро стандартно представяне на дата плюс местно време. Методът parse() LocalDateTime представен в два варианта:- static LocalDateTime parse(CharSequence text) връща екземпляр на LocalDateTime от текстов низ като 2007-12-03T10:15:30.
- static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter) връща екземпляр на 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);
}
}
Резултатът е:
LocalDateTime е: 2020-11-17T19:34:50.630
5. ZonedDateTime parse() метод
Клас ZonedDateTime представлява дата-час с часова зона. Този клас е неизменен. Той съхранява полета за дата и час с точност до наносекунди и часова зона с отместване на зоната, използвано за обработка на двусмислени местни дати-часове. Така че, ако трябва да запазите стойност като „14 октомври 2020 г. в 17:50.30.123456789 +02:00 в часовата зона Европа/Париж“, можете да използвате ZonedDateTime. Класът често се използва за манипулиране на локални данни, базирани на времето. ZondeDateTime parse() е анализатор, който разделя низа на токени в системата ISO-8061. Ето пример за стойност, която ще получите след анализиране:
2020-04-05T13:30:25+01:00 Европа/Рим
Използва се винаги, когато са необходими данни с висока точност (в крайна сметка данните, които получавате, са точни до наносекунди). Класът често се използва за манипулиране на локални данни, базирани на времето. Нека да разгледаме общия синтаксис на метода ZonedDateTime parse(), който разработчиците използват за преобразуване на низови стойности в клас ZonedDateTime.
public static ZonedDateTime parse(CharSequence text)
Единственият параметър, използван от метода, е текстов низ. Като върната стойност ще получите един or поредица от обекти във формат ZonedDateTime. Ако има грешка по време на анализирането or е невъзможно, като начало методът връща DateTimeParseException. Също така има метод parse() с две променливи.
public static ZonedDateTime parse(CharSequence text, DateFormatter formatter)
Този метод получава екземпляр на ZonedDateTime от текстова стойност с помощта на специфичен форматиращ инструмент. Методът с един параметър, форматиращият DateTimeFormatter.ISO_LOCAL_TIME се използва по подразбиране. Нека да разгледаме случая на използване на 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);
}
}
Резултатът е:
2020-10-15T10:15:30+01:00 2020-10-15T13:30:25+01:00
6. LocalTime parse() метод
Класът LocalTime представлява време, често разглеждано като час-minutesа-секунда. Този клас също е неизменен, като например ZonedDateTime.Time се представя с наносекунда точност. Например стойността "13:45.30.123456789" може да бъде съхранена в LocalTime. Има два метода LocalTime parse() с един и два параметъра. Нека да разгледаме и двете:
public static LocalTime parse(CharSequence text)
Можете да използвате LocalTime parse() само с един параметър, низът, който искате да анализирате. В този случай форматиращият DateTimeFormatter.ISO_LOCAL_TIME се използва по подразбиране.
Method with two parameters has the next syntax:
public static LocalTime parse(CharSequence text,
DateTimeFormatter formatter)
Той получава екземпляр на LocalTime от текстова стойност, като използва специфичен форматиращ инструмент. И двата метода връщат LocalTime стойност във формат hh/mm/ss. Внимавайте за предупреждения за DateTimeParceException. Те означават, че форматът на текста на низа не съответства на този на обектите LocalTime. Ето пример за използване на LocalTime parse() в производството:
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() метод
MessageFormat разширява класа Format. Format е абстрактен базов клас за форматиране на чувствителни към локала данни (дати, съобщения и числа). MessageFormat получава някои обекти и ги форматира. След това вмъква форматираните низове в шаблона на подходящите места. MessageFormat parse() се използва за получаване на стойност на низ, ако е дадено началото на индекса. Ето общия синтаксис на метода:
public Object[] parse(String source, ParsePosition position)
Където източникът е низ за анализиране, а позицията е началният индекс на анализиране. Ето пример за работа на метода 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. Метод на ниво parse().
Когато програмист използва Logger, за да регистрира съобщение, то се регистрира с определено ниво на лог. Има седем вградени нива на регистър:- ТЕЖКО
- ВНИМАНИЕ
- ИНФО
- КОНФИГ
- ГЛОБА
- ПО-ФИН
- НАЙ-ФИНАТА
public static Level parse(String name)
Параметърът на метода е името на низ, който разработчикът иска да анализира. Може да е име на нивото, неговото инициализиращо име or няHowво друго цяло число. В замяна програмистът получава стойност за име на ниво, съответстваща на тази на първоначалния низ. В случай, че аргументът съдържа символи, които не могат да бъдат анализирани, системата ще хвърли IllegalArgumentException. Ако низът не съдържа стойности, разработчикът получава NullPointerException. Ето част от codeа, който показва изпълнението на 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());
}
}
Резултатът е:
Ниво = FINE Ниво = FINE OFF
9. Незабавен метод parse().
Моменталният клас моделира една моментна точка от времевата линия. Можете да го използвате за записване на времеви отпечатъци на събития във вашето приложение. Instant parse() получава Instant стойност от текстова стойност. По-късно низът ще бъде съхранен като стойност на часовата зона UTC. Системата използва DateTimeFormatter.ISO_INSTANT като 2020-10-14T11:28:15.00Z. Ето синтаксис на метода Instant parse() :
public static Instant parse(CharSequence text)
За да анализира низ и да получи момент, разработчикът трябва да се увери, че низът съдържа няHowъв текст. В случай, че е нула, ще получите изключение DateTimeException. Ето пример за използване на Instant parse в 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);
}
}
Резултатът е:
2020-10-14T10:37:30Z
10. Метод на NumberFormat parse().
Класът java.text.NumberFormat се използва за форматиране на числа. NumberFormat parse() е метод по подразбиране на този клас. Методът parse () на класа NumberFormat преобразува низ в число. Разработчиците го използват, за да разбият низ до номерата на неговите компоненти. Разборът започва от началото на низа. Ако извикате setParseIntegerOnly (true) преди да извикате метода parse () , Howто е показано в следващия пример, тогава се преобразува само цялата част от числото. Ето синтаксиса на NumberFormat parse() :
public Number parse(String str)
Като параметър функцията приема низове. Връщаната стойност от анализа е числова стойност. Ако началото на низ не може да бъде анализирано, ще получите предупреждение ParseException. За да видите приложението на метода NumberFormat parse() , разгледайте примера по-долу:
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"));
}
}
Резултатът е:
3.141592 3
GO TO FULL VERSION