Kiểm tra dữ liệu nhập vào trong java là một trong những keyword được search nhiều nhất trên Google về chủ đề kiểm tra dữ liệu nhập vào trong java. Trong bài viết này, xaydungweb.vn sẽ viết bài viết Hướng dẫn kiểm tra dữ liệu nhập vào trong java mới nhất 2020.
Hướng dẫn kiểm tra dữ liệu nhập vào trong java mới nhất 2020
Hôm nay, tôi nhận được mail của 1 bạn đang mới bắt đầu học Java và hỏi về chủ đề mà tôi nghĩ khá hay và quan trọng so với các bạn khi sử dụng việc với kiểu dữ liệu ngày tháng.
Bạn Nguyễn Xuân Thương (ngansaohoitu.tbd@gmail.com) hỏi:
Sẵn đây anh giúp em cái này với Em co cái hàm nhập ngày tháng giống như sau: public static Date getDate() boolean q=true; String ds; Date pDob = null; SimpleDateFormat fm=new SimpleDateFormat("dd-MM-yyyy"); while(q) try ds=getString("nhap ngay sinh co dang dd-MM-yyyy:"+"\t"); pDob=fm.parse(ds); q=false; catch(ParseException e) return pDob; Như trên thì em phải nhập đúng đinh dạng dd-MM-yyyy thì được rồi, nhưng mà khì nhập vào ngày vd: 20-13-1994 thì nó lại in ra ngày 20-01-1995 Anh có cách nào ràng buộc cho nó nhập đúng ngày tháng thì giúp em với Cảm ơn anh nhiều!
Để rà soát dữ liệu Date, chúng ta có rất nhiều phương pháp giống như giải quyết Exception trong khi convert từ kiểu dữ liệu String sang Date, hay sub-string từng thành phần để test, … Những phương pháp này luôn luôn cho được hiệu quả muốn nhưng giải quyết logic có phần lằng nhằng và khó khăn.
kiểm tra dữ liệu nhập vào trong java
Để tăng cao và đơn giản hóa việc rà soát dữ liệu Date, tôi dùng Regular Expression để giải quyết các chuỗi ngày tháng.
định hướng ngày tháng
Trong gợi ý này, tôi sẽ sử dụng định hướng ngày tháng giống như sau: dd/mm/yyyy
Date Format Regular Expression Pattern:
(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)
Pattern groups:- nhóm 1: (0?[1-9]|[12][0-9]|3[01]): gồm có các ngày dạng 01-09, 1-9; 10-19, 20-29; 30-31- group 2: (0?[1-9]|1[012]): gồm có các tháng dạng 01-09, 1-9; 10, 11, 12- nhóm 3: ((19|20)\\d\\d): bao gồm các năm dạng 19xx, 20xx
Class DateUtils:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author code4lifevn */ public class DateUtils 3[01])/(0?[1-9] |
Class DateTester:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
/** * * @author code4lifevn */ public class DateTester public static void main(String[] args) String[] dates = "20/10/2013" , "08/03/2013" , "a5/07/2013" , "5/7/1990" , "31/11/2013" , "31/06/2013" ; for (String date : dates) System.out.println(DateUtils.isValidDate(date) ? "PASSED: " + date : "FAIL: " + date); |
Output:
PASSED: 20/10/2013 PASSED: 08/03/2013 FAIL: a5/07/2013 PASSED: 5/7/1990 FAIL: 31/11/2013 FAIL: 31/06/2013
Hy vọng bài viết này sẽ làm bạn trong quá trình học tập và sử dụng việc hiệu quả!
nguồn: http://code4lifevn.blogspot.com/