non sono sicuro se siete alla ricerca di uno o tutti, ecco sono funzioni per entrambi:
public static boolean isAllFullWidth(String str) {
for (char c : str.toCharArray())
if ((c & 0xff00) != 0xff00)
return false;
return true;
}
public static boolean areAnyFullWidth(String str) {
for (char c : str.toCharArray())
if ((c & 0xff00) == 0xff00)
return true;
return false;
}
Per quanto riguarda la tua metà larghezza '.'
e possibili '_'
. li striscia fuori prima con una sostituzione forse:
String str="abc@gmail.com";
if (isAllFullWidth(str.replaceAll("[._]","")))
//then apart from . and _, they are all full width
Regex
In alternativa, se si desidera utilizzare una regex per testare, allora questo è l'intervallo di caratteri reale per tutta la larghezza:
[\uFF01-\uFF5E]
Quindi il metodo è il seguente:
public static boolean isAllFullWidth(String str) {
return str.matches("[\\uff01-\\uff5E]*");
}
È possibile aggiungere gli altri caratteri ad esso e quindi non è necessario eliminarli:
public static boolean isValidFullWidthEmail(String str) {
return str.matches("[\\uff01-\\uff5E._]*");
}
il metodo contiene lo dirà. iterare su una stringa contenente solo quei "caratteri a larghezza intera" e, per ognuno, eseguire il metodo contiene sulla stringa. – Stultuske
Sì, ho controllato anche io. Ma il codice sembra disordinato, tuttavia nel caso di cui sopra sto controllando la posta elettronica. quindi devo controllare alcuni caratteri aggiuntivi come @,. , _ etc – Kumar
Stai cercando ** all ** full width, o ** any ** full width? cioè quale risultato vuoi quando miscela di pieno e metà? – weston