Android Validation 3
จากตอนที่แล้ว เราได้รู้จัก String pattern และตัวอย่างการใช้งาน String pattern ไปบ้างแล้ว แต่นั่นยังไม่ใช่ทั้งหมด ในวันนี้เราก็จะมาอธิบายเพิ่มเติมในส่วนที่จะทำให้เราใช้งาน String pattern ได้สมบูรณ์มากกว่าเดิม
และเหมือนเดิม เพื่อการเห็นภาพการใช้งานที่ชัดเจน เราจะเริ่มด้วยการปฏิบัติก่อนที่จะบอกหลักการใช้งานของแต่ละ Pattern ที่สร้างขึ้นมา
ตัวอย่างแรกคือ ตัวอย่างในการ Check ว่า Password ที่เราจะสร้างนั้นถูกหลักเกณฑ์ดังต่อไปนี้หรือไม่คือ
- มีอักษรภาษาอังกฤษตัวพิมพ์ใหญ่และพิมพ์เล็กอย่างน้อยอย่างละหนึ่งตัว
- มีตัวเลขอย่างน้อยหนึ่งตัว
- มีสัญลักษณ์อย่างน้อยหนึ่งตัว
- มีความยาวมากกว่า 6 ตัวอักษร
ซึ่งจะเห็นได้ว่า เราต้องตรวจสอบเงื่อนไขมากมาย ซึ่งถ้าตรวจสอบแบบใช้ If else ก็จะต้องเขียนโค้ดเพื่อตรวจสอบหลายกรณีแต่ถ้าเราใช้ String pattern ได้ ก็จะกลายเป็นเรื่องง่าย ๆ
ก่อนอื่นก็ต้องสร้างแบบฟอร์มในการกรอกข้อมูลดังเช่นตอนที่แล้วซึ่ง ดู CODE XML ได้ ที่นี่
และ CODE ใน MainActivity.java
public class MainActivity extends AppCompatActivity
{
private EditText passEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
passEditText =
(EditText)findViewById (R.id.editText_password);
findViewById(R.id.btn_signup).setOnClickListener
(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
final String pass = passEditText.getText().toString();
if (!isValidPassword(pass)) {
passEditText.setError("Invalid Password");
}
}
});
}
private boolean isValidPassword(String pass){...}
}
ซึ่งจะเห็นได้ว่า เมื่อมีการกดปุ่มเราจะมีการเรียกฟังก์ชัน isValidPassword( ) ซึ่งเป็น Function ที่เราสร้างขึ้นเพื่อตรวจสอบการสร้าง Password ของเราซึ่งมี Code ดังนี้
// validating password with retype password
private boolean isValidPassword(String pass) {
String PASS_PATERN =
"((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\\p{Punct}]).{6,})";
Pattern pattern = Pattern.compile(PASS_PATERN);
Matcher matcher=pattern.matcher(pass);
return matcher.matches();
}
ซึ่งผลลัพธ์ที่ได้คือ จะเป็นการ check ตั้งค่า password ตามหลักการที่เราสร้างขึ้นมา ดังนี้
ตัวอย่างที่2 จะเป็นการ check การกรอกข้อมูล วัน เดือน ปี เกิด ว่ามีความถูกต้องตามหลักการที่เราสร้างขึ้นมาหรือไม่ โดยหลักการที่เราสร้างขึ้นมี ดังนี้
- วันที่ และ เดือน ต้องเป็นตัวเลข 2 ตัว ที่ไม่เท่ากับ 00 ปีต้องมี ตัวเลข 4 ตัว
- ต้องมีการคั่น วันเดือนปีด้วย เครื่องหมาย /
ขั้นแรก เราก็จะทำการสร้างแบบฟอร์ที่ใช้ในการกรอกข้อมูลซึ่ง CODE.XML ดูได้ตามนี้
และ CODE ใน MainActivity.java
public class MainActivity extends AppCompatActivity {
private EditText passEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
passEditText = (EditText) findViewById(R.id.editText_password);
findViewById(R.id.btn_signup).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
final String BirthDate = passEditText.getText().toString();
if (!isValidBirthDate(BirthDate)) {
passEditText.setError("Invalid BirthDate");
}
}
});
}
ซึ่งจะเห็นได้ว่า เมื่อมีการกดปุ่มเราจะมีการเรียกฟังก์ชัน isValidBirthDate( ) ซึ่งเป็น Function ที่เราสร้างขึ้นเพื่อตรวจสอบการกรอกข้อมูล วันเดือนปีเกิด ของเราซึ่งมี Code ดังนี้
private boolean isValidBirthDate(String BirthDate) {
String BirthDate_PATERN="([0-9{2}][^00])+/+([0-9{2}][^00])+/+[0-9]{4}";
Pattern pattern = Pattern.compile(BirthDate_PATERN);
Matcher matcher=pattern.matcher(BirthDate);
return matcher.matches();
}
โดยผลลัพธ์ที่ได้ก็จะเป็นการตรวจสอบข้อมูล วันเดือนปีเกิด ตามหลักการที่เราสร้างขึ้น ดังนี้