Я не уверен, если вы ищете или все, так что здесь функции для обоих:
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;
}
Как для полуширины '.'
и возможного '_'
. Зачистите их сначала с заменой, может быть:
String str="abc@gmail.com";
if (isAllFullWidth(str.replaceAll("[._]","")))
//then apart from . and _, they are all full width
Regex
В качестве альтернативы, если вы хотите использовать регулярное выражение для проверки, то это реальный диапазон символов для полной ширины:
[\uFF01-\uFF5E]
Таким образом, способ тогда выглядит следующим образом:
public static boolean isAllFullWidth(String str) {
return str.matches("[\\uff01-\\uff5E]*");
}
Вы можете добавить к нему других персонажей и поэтому их не нужно снимать:
public static boolean isValidFullWidthEmail(String str) {
return str.matches("[\\uff01-\\uff5E._]*");
}
метод содержит информацию об этом. итерации по строке, содержащей только те «символы полной ширины», и для каждого запускают метод contains на вашей String. – Stultuske
Да, я тоже проверил. Но код выглядит грязным, однако в приведенном выше случае я проверяю электронную почту. поэтому я должен проверить некоторые дополнительные символы, такие как @,. , _ и т. д. – Kumar
Вы ищете ** все ** полную ширину или ** любую ** полную ширину? то есть какой результат вы хотите, когда смесь полна и половина? – weston