Character Class \p{javaUpperCase} จับคู่ตัวอักษรที่ Character.isUpperCase(char) คืนค่า true คือ ตัวอักษรพิมพ์ใหญ่ตาม Java definition (Unicode category Lu + Lt)
ตัวอย่าง 1: นับตัวพิมพ์ใหญ่
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a string");
String input = sc.nextLine();
String regex = "[\\p{javaUpperCase}]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
int count = 0;
while (matcher.find()) {
count++;
}
System.out.println("Number of uppercase characters: " + count);
}
}
ผลลัพธ์
Enter a string: This IS A sample TExt
Number of uppercase characters: 6
ตัวอย่าง 2: หาสตริงที่ประกอบด้วยตัวพิมพ์ใหญ่เท่านั้น
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String args[]) {
String regex = "^\\p{javaUpperCase}+$";
Scanner sc = new Scanner(System.in);
System.out.println("Enter 5 input strings: ");
String[] input = new String[5];
for (int i = 0; i < 5; i++) {
input[i] = sc.nextLine();
}
Pattern p = Pattern.compile(regex);
System.out.println("Strings with only uppercase characters:");
for (int i = 0; i < 5; i++) {
Matcher m = p.matcher(input[i]);
if (m.matches()) {
System.out.println(m.group());
}
}
}
}
ผลลัพธ์
Enter 5 input strings:
Raju
RAMU
rahman
radha
SUnDar*
Strings with only uppercase characters:
RAMU
อธิบาย
\p{javaUpperCase}=Character.isUpperCase()ตรวจสอบตาม Java spec- รวม: A-Z (Lu) และ Titlecase letters (Lt) เช่น Dž (DZ with caron), Lj (LJ), Nj (NJ)
- ใน "This IS A sample TExt": T, I, S, A, T, E = 6 ตัว
- เฉพาะ "RAMU" ที่เป็นพิมพ์ใหญ่ทั้งหมด → ผ่าน
- "SUnDar*" มี U, D พิมพ์ใหญ่ แต่มีตัวอื่น → ไม่ผ่าน ^...$
เปรียบเทียบ: \p{javaUpperCase} vs \p{Lu} vs [A-Z]
| Pattern | Standard | ครอบคลุม | ตัวอย่างเพิ่มเติมนอก A-Z |
|---|---|---|---|
[A-Z] | ASCII | A-Z เท่านั้น | - |
\p{Lu} | Unicode Category | Letter, Uppercase | À, Á, Â, Ã, Ä, Å, Æ, Ç, È, É, Ê, Ë, Ì, Í, Î, Ï, Ð, Ñ, Ò, Ó, Ô, Õ, Ö, Ø, Ù, Ú, Û, Ü, Ý, Þ, Α, Β, Γ, А, Б, В... |
\p{javaUpperCase} | Java Character.isUpperCase() | Lu + Lt (Titlecase) | เหมือน Lu + Dž, Lj, Nj (Titlecase) |
Java Character Methods ที่เกี่ยวข้อง
Character.isUpperCase(char)- deprecated (ใช้ int codePoint)Character.isUpperCase(int codePoint)- แนะนำCharacter.toUpperCase(char)/toUpperCase(int)Character.getType(int codePoint) == Character.UPPERCASE_LETTER(Lu)Character.getType(int codePoint) == Character.TITLECASE_LETTER(Lt)
การใช้งาน
- Validation: ชื่อตัวแปร, class names (PascalCase)
- Text analysis: นับตัวพิมพ์ใหญ่ในเอกสารหลายภาษา
- i18n: รองรับตัวพิมพ์ใหญ่ทุกภาษา ไม่ใช่แค่ ASCII