Cách tốt nhất và / hoặc dễ nhất để nhận ra nếu một chuỗi.charAt (chỉ mục) là một chữ cái Az hoặc một số trong Java mà không sử dụng các biểu thức thông thường? Cảm ơn.
Cách tốt nhất và / hoặc dễ nhất để nhận ra nếu một chuỗi.charAt (chỉ mục) là một chữ cái Az hoặc một số trong Java mà không sử dụng các biểu thức thông thường? Cảm ơn.
Câu trả lời:
Character.isDigit(string.charAt(index))
( JavaDoc ) sẽ trả về true nếu đó là một chữ số
Character.isLetter(string.charAt(index))
( JavaDoc ) sẽ trả về true nếu đó là một chữ cái
Character.isLetterOrDigit(string.charAt(index))
cho cả các xác minh.
Tôi đang tìm một hàm chỉ kiểm tra nếu đó là một trong các chữ cái Latinh hoặc số thập phân. Kể từ khi char c = 255
, mà trong phiên bản in được là ├ và coi như là một lá thư do Character.isLetter(c)
. Chức năng này tôi nghĩ là những gì hầu hết các nhà phát triển đang tìm kiếm:
private static boolean isLetterOrDigit(char c) {
return (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9');
}
u00ff
thực sự là ký tự. (Chữ thường chữ y có âm sắc.) Mật mã đại diện cho ├ là u251c
.
if (c in 'a'..'z' || с in 'A'..'Z' || c in '0'..'9')
Như các câu trả lời chỉ ra (nếu bạn kiểm tra chúng cẩn thận!), Câu hỏi của bạn không rõ ràng. Bạn có ý nghĩa gì bởi "một chữ cái Az" hoặc một chữ số?
Nếu bạn muốn biết nếu một ký tự là một chữ cái hoặc chữ số Unicode , thì hãy sử dụng các phương thức Character.isLetter
và Character.isDigit
.
Nếu bạn muốn biết một ký tự là một chữ cái hoặc chữ số ASCII , thì điều tốt nhất nên làm là kiểm tra bằng cách so sánh với các phạm vi ký tự 'a' đến 'z', 'A' với 'Z' và '0' với '9'.
Lưu ý rằng tất cả các chữ cái / chữ số ASCII là chữ cái / chữ số Unicode ... nhưng có nhiều ký tự chữ cái / chữ số Unicode không phải là ASCII. Ví dụ: các chữ cái có dấu, cyrillic, tiếng Phạn, ...
Giải pháp chung là làm điều này:
Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);
và sau đó kiểm tra xem khối đó có phải là một trong những khối mà bạn quan tâm không. Trong một số trường hợp, bạn sẽ cần phải kiểm tra nhiều khối. Ví dụ: có (ít nhất) 4 khối mã cho các ký tự Cyrillic và 7 khối cho tiếng Latin. Các Character.UnicodeBlock
lớp định nghĩa các hằng số tĩnh cho các khối nổi tiếng; xem javadocs .
Lưu ý rằng bất kỳ điểm mã nào sẽ có nhiều nhất một khối.
Lớp nhân vật Java có một phương thức isLetterOrDigit kể từ phiên bản 1.0.2
Tôi không biết về điều tốt nhất, nhưng điều này có vẻ khá đơn giản với tôi:
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'))
// ...
Nguồn: https://docs.oracle.com/javase/tutorial/i18n/text/charintro.html
if a string.charAt(index) is an A-z letter
. Vì vậy, chúng ta không nói về các ngôn ngữ khác là chúng ta?
So sánh giá trị của nó. Nó phải nằm giữa giá trị của 'a' và 'z', 'A' và 'Z', '0' và '9'
Character.isLetter()
phương pháp tích hợp?
Character.isLetter()
là thô sơ. Trừ khi chúng ta đang nói về quốc tế hóa?
Sử dụng mã dưới đây
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");
}
}