2012-12-18 12 views
7

Diciamo che ho un array di stringhe che contiene alcune lettere e punteggiaturaVerificare se la stringa è un carattere di punteggiatura

String letter[] = ["a","b","c",".","a"] 

Nella lettera [3] che abbiamo ""

Voglio controllare utilizzando il ciclo for ma come posso fare la dichiarazione if? Sappiamo che ci possono essere segni di punteggiatura

mio progresso finora (, ecc.?!):

for(int a=0; a<letter.length;a++) 
{ 
if(letter[a].equals(".")) ===>> i'm confused in this line 
{ 
System.out.println ("its puctuation"); 
} 
else 
{ 
System.out.println ("just letter"); 
} 
+3

È possibile utilizzare espressioni regolari per questo scopo. È davvero a portata di mano. – Smit

+0

@smit, puoi darmi un suggerimento? – sephtian

+0

Questo ti darà un'idea: [Punteggiatura Regex in Java] (http://stackoverflow.com/questions/8200908/punctuation-regex-in-java) – Stanley

risposta

16

Vuoi controllare più segni di punteggiatura diversi da .?

Se è così puoi farlo.

String punctutations = ".,:;";//add all the ones you want. 
... 
if(punctutations.contains(letter[a])) 
+0

grazie! semplice ma funziona – sephtian

+2

Questa soluzione implica che vengano specificati manualmente tutti i segni di punteggiatura. La definizione di "punteggiatura" è decisamente incompleta. –

+0

Questo non è abbastanza. Esistono molte lingue con segni di punteggiatura diversi. Questi nemmeno coprono l'alfabeto latino. Usa invece \ p {P} o \ p {Punteggiatura} – andreyro

2

provare questo metodo: Character.isLetter(). Restituisce vero se il carattere è una lettera (a-z, maiuscolo o minuscolo), restituisce false se il carattere è numerico o simbolo.

ad es. boolean answer = Character.isLetter ('!');

risposta sarà uguale a falso.

44

Ecco un modo per farlo con le espressioni regolari:

if (Pattern.matches("\\p{Punct}", str)) { 
    ... 
} 

Il \p{Punct} espressione regolare è un modello POSIX che rappresenta un singolo carattere di punteggiatura .

-3

function has_punctuation(str) { 
 

 
    var p_found = false; 
 
    var punctuations = '`[email protected]#$%^&*()_+{}|:"<>?-=[]\;\'.\/,'; 
 
    $.each(punctuations.split(''), function(i, p) { 
 
    if (str.indexOf(p) != -1) p_found = true; 
 
    }); 
 

 
    return p_found; 
 

 
}