Nie jestem pewien, czy szukasz jednego lub wszystkich, więc tutaj są funkcje dla obu:
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;
}
Co do szerokości pół '.'
i ewentualnego '_'
. Rozebrać je najpierw z zastąpienia może:
String str="abc@gmail.com";
if (isAllFullWidth(str.replaceAll("[._]","")))
//then apart from . and _, they are all full width
Regex
Alternatywnie, jeśli chcesz używać regex do testowania, to jest rzeczywisty zakres znaków dla pełnej szerokości:
[\uFF01-\uFF5E]
Tak więc metoda wygląda następująco:
public static boolean isAllFullWidth(String str) {
return str.matches("[\\uff01-\\uff5E]*");
}
Możesz dodać do niej swoje inne postacie i więc nie trzeba ich rozbierać:
public static boolean isValidFullWidthEmail(String str) {
return str.matches("[\\uff01-\\uff5E._]*");
}
metoda zawiera powie ci to. iteruj po łańcuchu zawierającym tylko te znaki "pełnej szerokości", a dla każdego uruchom metodę zawiera w swoim łańcuchu. – Stultuske
Tak, też sprawdziłem. Ale kod wygląda na brudny, jednak w powyższym przypadku sprawdzam pocztę. więc muszę sprawdzić kilka dodatkowych znaków, takich jak @,. , _ itp. – Kumar
Szukasz ** całej ** pełnej szerokości lub ** dowolnej ** pełnej szerokości? tj. jaki rezultat chcesz, gdy mieszanka pełnego i pół? – weston