2010-10-28 7 views

risposta

100

Character.isDigit(string.charAt(index)) (JavaDoc) restituisce vero se si tratta di una cifra
Character.isLetter(string.charAt(index)) (JavaDoc) restituirà vero se si tratta di una lettera

+8

Nota: questi dati indicano se il carattere è una lettera/cifra Unicode. L'OP ha chiesto "una lettera A-z" ... qualunque cosa significhi. –

+0

Perché ASCII ├ (255) passa nel mio caso? Pensavo che fosse solo per a-z, A-Z e 0-9? – mr5

+0

Collegamenti non validi per i javadoc. –

3

Confrontare il suo valore. Dovrebbe essere compreso tra il valore di 'a' e 'z', 'A' e 'Z', '0' e '9'

+0

Questo approccio manuale è migliore rispetto al metodo incorporato 'Character.isLetter()' ? –

+1

@IgorGanapolsky - Dipende esattamente da cosa stai cercando di fare. Suggerimento: fanno cose diverse! –

+0

@StephenC Ho pensato che 'Character.isLetter()' è rudimentale. A meno che non stiamo parlando di internazionalizzazione? –

6

io non conoscono meglio, ma questo sembra abbastanza semplice per me:!

Character.isDigit(str.charAt(index)) 
Character.isLetter(str.charAt(index)) 
13

Poiché le risposte indicano (se si esamina con attenzione), la tua domanda è ambiguo. Cosa intendi con "una lettera A-z" o una cifra?

  • Se vuoi sapere se un personaggio è un lettera Unicode o cifre, quindi utilizzare il Character.isLetter e Character.isDigit metodi.

  • Se vuoi sapere se un personaggio è un lettera ASCII o cifre, allora la cosa migliore da fare è quello di testare confrontando con il carattere gamme 'a' a 'z', 'A' a ' Z 'e' 0 'a' 9 '.

Si noti che tutte le lettere ASCII/cifre sono lettere Unicode/cifre ... ma ci sono molte lettere Unicode/caratteri cifre che non sono ASCII. Ad esempio, le lettere accentate, cirillico, il sanscrito, ...

+0

Quindi, come determinare se un personaggio è una lettera cirillica? –

+0

Per prima cosa, si fa una nuova domanda –

8

Java classe personaggio ha un metodo di isLetterOrDigit partire dalla versione 1.0.2

+0

Questa è la risposta giusta. –

10

Sto cercando una funzione che controlla solo se si tratta di una delle lettere latine o un numero decimale. Dal char c = 255, che nella versione stampabile è e considerato come una lettera da Character.isLetter(c). Questa funzione Penso che è quello che la maggior parte degli sviluppatori sono alla ricerca di:

private static boolean isLetterOrDigit(char c) { 
    return (c >= 'a' && c <= 'z') || 
      (c >= 'A' && c <= 'Z') || 
      (c >= '0' && c <= '9'); 
} 
0
// 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')) 
    // ... 

Fonte: https://docs.oracle.com/javase/tutorial/i18n/text/charintro.html

+0

Il codice precedente è errato perché funziona solo con l'inglese e poche altre lingue. Per internazionalizzare l'esempio precedente, sostituirlo con le seguenti dichiarazioni: char ch; // ... // Questo codice è OK! se (Character.isLetter (ch)) // ... se (Character.isDigit (ch)) // ... se (Character.isSpaceChar (ch)) // .. –

+0

OP chiesto chiaramente 'se un string.charAt (indice) è una lettera di Az'. Quindi non stiamo parlando di altre lingue, vero? – retrazil

0
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"); 


} 
} 
+2

Questa non è una risposta di espressione regolare – user7294900

Problemi correlati