อะไรคือวิธีที่ดีที่สุดและ / หรือง่ายที่สุดในการรับรู้ว่า string.charAt (index) เป็นตัวอักษร Az หรือตัวเลขใน Java โดยไม่ต้องใช้นิพจน์ทั่วไป ขอบคุณ
อะไรคือวิธีที่ดีที่สุดและ / หรือง่ายที่สุดในการรับรู้ว่า string.charAt (index) เป็นตัวอักษร Az หรือตัวเลขใน Java โดยไม่ต้องใช้นิพจน์ทั่วไป ขอบคุณ
คำตอบ:
Character.isDigit(string.charAt(index))
( JavaDoc ) จะคืนค่าจริงหากเป็นตัวเลข
Character.isLetter(string.charAt(index))
( JavaDoc ) จะคืนค่าจริงหากเป็นตัวอักษร
Character.isLetterOrDigit(string.charAt(index))
สำหรับทั้งการยืนยัน
ฉันกำลังมองหาฟังก์ชันที่ตรวจสอบว่าเป็นตัวอักษรละตินตัวใดตัวหนึ่งหรือเลขฐานสิบเท่านั้น ตั้งแต่char c = 255
ซึ่งในรุ่นที่พิมพ์เป็น├Character.isLetter(c)
และถือได้ว่าเป็นตัวอักษรโดย ฟังก์ชันนี้ฉันคิดว่าเป็นสิ่งที่นักพัฒนาส่วนใหญ่มองหา:
private static boolean isLetterOrDigit(char c) {
return (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9');
}
u00ff
เป็นอักขระÿ (กรณีที่ต่ำกว่าปีที่มีเครื่องหมาย.) The u251c
จุดโค้ดที่แสดงถึง├คือ
if (c in 'a'..'z' || с in 'A'..'Z' || c in '0'..'9')
ตามที่คำตอบระบุไว้ (หากคุณตรวจสอบอย่างรอบคอบ!) คำถามของคุณคลุมเครือ "ตัวอักษร Az" หรือตัวเลขหมายถึงอะไร
หากคุณต้องการทราบว่าอักขระเป็นตัวอักษรUnicodeหรือตัวเลขให้ใช้Character.isLetter
และCharacter.isDigit
วิธีการ
หากคุณต้องการทราบว่าอักขระเป็นตัวอักษรหรือตัวเลขASCIIสิ่งที่ดีที่สุดที่ต้องทำคือทดสอบโดยเปรียบเทียบกับช่วงอักขระ 'a' ถึง 'z', 'A' ถึง 'Z' และ '0' ถึง '9'
โปรดสังเกตว่าตัวอักษร / ตัวเลข ASCII ทั้งหมดเป็นตัวอักษร / ตัวเลข Unicode ... แต่มีตัวอักษร / ตัวเลข Unicode จำนวนมากที่ไม่ใช่ ASCII ตัวอย่างเช่นอักษรเน้นเสียงซีริลลิกสันสกฤต ...
วิธีแก้ปัญหาทั่วไปคือทำสิ่งนี้:
Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);
จากนั้นทดสอบเพื่อดูว่าบล็อกนั้นเป็นหนึ่งในบล็อกที่คุณสนใจหรือไม่ในบางกรณีคุณจะต้องทดสอบหลายบล็อก ตัวอย่างเช่นมีบล็อกรหัส (อย่างน้อย) 4 บล็อกสำหรับอักขระซิริลลิกและ 7 สำหรับละติน Character.UnicodeBlock
ระดับกำหนดค่าคงที่คงที่สำหรับบล็อกที่รู้จักกันดี; ดูjavadocs
โปรดทราบว่าจุดรหัสใด ๆ จะอยู่ในที่มากที่สุดบล็อกหนึ่ง
คลาส Java Character มีเมธอดisLetterOrDigitตั้งแต่เวอร์ชัน 1.0.2
ฉันไม่รู้เกี่ยวกับสิ่งที่ดีที่สุด แต่ดูเหมือนจะง่ายสำหรับฉัน:
Character.isDigit(str.charAt(index))
Character.isLetter(str.charAt(index))
// check if ch is a letter
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
// ...
// check if ch is a digit
if (ch >= '0' && ch <= '9')
// ...
// check if ch is a whitespace
if ((ch == ' ') || (ch =='\n') || (ch == '\t'))
// ...
ที่มา: https://docs.oracle.com/javase/tutorial/i18n/text/charintro.html
if a string.charAt(index) is an A-z letter
ถามอย่างชัดเจน เราจึงไม่ได้พูดถึงภาษาอื่น ๆ ใช่หรือไม่?
เปรียบเทียบมูลค่า ควรอยู่ระหว่างค่าของ 'a' และ 'z', 'A' และ 'Z', '0' และ '9'
Character.isLetter()
วิธีการในตัวหรือไม่?
Character.isLetter()
เป็นพื้นฐาน เว้นแต่เราจะพูดถึงความเป็นสากล?
ใช้รหัสด้านล่าง
Character.isLetterOrDigit(string.charAt(index))
import java.util.Scanner;
public class v{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
String str;
int l;
int flag=0;
System.out.println("Enter the String:");
str=in.nextLine();
str=str.toLowerCase();
str=str.replaceAll("\\s","");
char[] ch=str.toCharArray();
l=str.length();
for(int i=0;i<l;i++){
if ((ch[i] >= 'a' && ch[i]<= 'z') || (ch[i] >= 'A' && ch[i] <= 'Z')){
flag=0;
}
else
flag++;
break;
}
if(flag==0)
System.out.println("Onlt char");
}
}