วิธีที่ดีที่สุดคือใช้นิพจน์ทั่วไปตัวดำเนินการประกอบและวิธีการสร้าง.test()สตริง
ฉันปล่อยให้คุณใช้ Google กับนิพจน์ทั่วไปและวิธีทดสอบสตริง (หาง่าย) แต่ที่นี่เราจะใช้เพื่อทดสอบตัวแปรของคุณ
/[a-z]/i.test(your-character-here)
สิ่งนี้จะคืนค่า TRUE เป็น FALSE โดยพิจารณาว่าอักขระของคุณตรงกับชุดอักขระในนิพจน์ทั่วไปหรือไม่ การแสดงออกปกติของเราตรวจสอบตัวอักษรทุกตัว az /[a-z]/โดยไม่คำนึงถึงกรณีของพวกเขาขอบคุณiธง
ดังนั้นการทดสอบขั้นพื้นฐานจะเป็น:
var theAnswer = "";
if (/[a-z]/i.test(your-character-here)) {
theAnswer = "It's a letter."
}
ตอนนี้เราจำเป็นต้องตรวจสอบว่าเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก ดังนั้นหากเราลบiธงออกจากการแสดงออกปกติของเราแล้วรหัสของเราด้านบนจะทดสอบตัวอักษรพิมพ์เล็ก az และถ้าเราใส่ifประโยคอื่นในประโยคelseแรกifเราก็สามารถทดสอบตัวพิมพ์ใหญ่โดยใช้ AZ ได้ แบบนี้:
var theAnswer = "";
if (/[a-z]/.test(your-character-here)) {
theAnswer = "It's a lower case letter."
} else if (/[A-Z]/.test(your-character-here)) {
theAnswer = "It's an upper case letter.";
}
และในกรณีที่ไม่ใช่ตัวอักษรเราสามารถเพิ่มคำสั่งสุดท้าย:
var theAnswer = "";
if (/[a-z]/.test(your-character-here)) {
theAnswer = "It's a lower case letter."
} else if (/[A-Z]/.test(your-character-here)) {
theAnswer = "It's an upper case letter.";
} else {
theAnswer = "It's not a letter."
}
รหัสดังกล่าวจะทำงาน แต่มันก็น่าเกลียด แต่เราสามารถใช้ "ผู้ประกอบการที่สาม" เพื่อแทนที่if-elseงบของเราด้านบน ผู้ประกอบการ Ternary เป็นเพียงวิธีย่อของการเข้ารหัสif-elseและ ไวยากรณ์เป็นเรื่องง่าย:
(statement-to-be-evaluated) ? (code-if-true) : (code-if-false)
และสิ่งเหล่านี้สามารถซ้อนกันได้เช่นกัน ฟังก์ชันอาจมีลักษณะดังนี้:
var theAnswer = "";
function whichCase(theLetter) {
theAnswer = /[a-z]/.test(theLetter) ? "It's lower case." : "";
theAnswer = /[A-Z]/.test(theLetter) ? "It's upper case." : "";
return(theAnswer);
}
โค้ดด้านบนดูดี แต่ใช้งานไม่ได้เพราะถ้าตัวละครของเราเป็นตัวพิมพ์เล็กให้theAnswerตั้งค่าเป็น "" เมื่อทดสอบตัวพิมพ์ใหญ่ดังนั้นให้วางซ้อนไว้:
var theAnswer = "";
function whichCase(theLetter) {
theAnswer = /[a-z]/.test(theLetter) ? "It's lower case." : (/[A-Z]/.test(theLetter) ? "It's upper case." : "It's not a letter.");
return(theAnswer);
}
นั่นจะใช้งานได้ดี! แต่ไม่จำเป็นต้องมีสองบรรทัดแยกเพื่อตั้งค่าตัวแปรtheAnswerแล้วส่งคืน และเราควรจะใช้letและconstมากกว่าvar(ดูพวกเขาหากคุณไม่แน่ใจว่าทำไม) เมื่อเราทำการเปลี่ยนแปลงเหล่านั้น:
function whichCase(theLetter) {
return(/[A-Z]/.test(theLetter) ? "It's upper case." : (/[a-z]/.test(theLetter) ? "It's lower case." : "It's not a letter."));
}
และเราก็จบลงด้วยรหัสที่รัดกุมและกระชับ ;)