Android Validation 3

AndroidApp
Technologies For Everyone
3 min readApr 10, 2017

จากตอนที่แล้ว เราได้รู้จัก String pattern และตัวอย่างการใช้งาน String pattern ไปบ้างแล้ว แต่นั่นยังไม่ใช่ทั้งหมด ในวันนี้เราก็จะมาอธิบายเพิ่มเติมในส่วนที่จะทำให้เราใช้งาน String pattern ได้สมบูรณ์มากกว่าเดิม

และเหมือนเดิม เพื่อการเห็นภาพการใช้งานที่ชัดเจน เราจะเริ่มด้วยการปฏิบัติก่อนที่จะบอกหลักการใช้งานของแต่ละ Pattern ที่สร้างขึ้นมา

ตัวอย่างแรกคือ ตัวอย่างในการ Check ว่า Password ที่เราจะสร้างนั้นถูกหลักเกณฑ์ดังต่อไปนี้หรือไม่คือ

  • มีอักษรภาษาอังกฤษตัวพิมพ์ใหญ่และพิมพ์เล็กอย่างน้อยอย่างละหนึ่งตัว
  • มีตัวเลขอย่างน้อยหนึ่งตัว
  • มีสัญลักษณ์อย่างน้อยหนึ่งตัว
  • มีความยาวมากกว่า 6 ตัวอักษร

ซึ่งจะเห็นได้ว่า เราต้องตรวจสอบเงื่อนไขมากมาย ซึ่งถ้าตรวจสอบแบบใช้ If else ก็จะต้องเขียนโค้ดเพื่อตรวจสอบหลายกรณีแต่ถ้าเราใช้ String pattern ได้ ก็จะกลายเป็นเรื่องง่าย ๆ

ก่อนอื่นก็ต้องสร้างแบบฟอร์มในการกรอกข้อมูลดังเช่นตอนที่แล้วซึ่ง ดู CODE XML ได้ ที่นี่

หน้า 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 ตามหลักการที่เราสร้างขึ้นมา ดังนี้

ผลลัพธ์จาก String pattern ของ Password

ตัวอย่างที่2 จะเป็นการ check การกรอกข้อมูล วัน เดือน ปี เกิด ว่ามีความถูกต้องตามหลักการที่เราสร้างขึ้นมาหรือไม่ โดยหลักการที่เราสร้างขึ้นมี ดังนี้

  • วันที่ และ เดือน ต้องเป็นตัวเลข 2 ตัว ที่ไม่เท่ากับ 00 ปีต้องมี ตัวเลข 4 ตัว
  • ต้องมีการคั่น วันเดือนปีด้วย เครื่องหมาย /

ขั้นแรก เราก็จะทำการสร้างแบบฟอร์ที่ใช้ในการกรอกข้อมูลซึ่ง CODE.XML ดูได้ตามนี้

หน้า 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();
}

โดยผลลัพธ์ที่ได้ก็จะเป็นการตรวจสอบข้อมูล วันเดือนปีเกิด ตามหลักการที่เราสร้างขึ้น ดังนี้

ผลลัพธ์ที่ได้จาก string pattern ในการตรวจสอบ วันเดือนปีเกิด

(ต่อ)String Pattern ที่นิยมใช้ มีดังนี้

--

--

AndroidApp
Technologies For Everyone

194-Activities(2017-CPE-CMU) by 570610544 570610550 570610555 570610570