如何进行全半角英数字记号カナ及汉字的チェック?

06-09-03 maxiaolong

您好,banq。

我现在想写一个方法来判断输入的字符串是否为半角的英字、半角的数字、半角的记号、全角及半角的カナ、全角及半角的汉字。现在半角的英字、数字、记号都已经判断出来了,如下。请问:全角及半角的カナ、全角及半角的汉字应该如何判断?最好在isAlphabetOrNumberOrSymbolOrKana这个方法中完成,如果能完成全部功能,也可以帮忙另外写个方法,谢谢。

public static boolean isAlphabetOrNumberOrSymbolOrKana(String target) {

if (target == null || target.equals("")) {

return false;

}

// 全角チェック

if (target.length() != target.getBytes().length) {

return false;

}

// 1文字ずつ半角英字(大文字,小文字可) or 半角数字 or 半角号であることを_Jする

for (int i = 0; i < target.length(); i++) {

char targetChar = target.charAt(i);

if (!isNumber(targetChar) && !isAlphabet(targetChar) && !isSymbol(targetChar)) {

return false;

}

}

return true;

}

private static boolean isNumber(char target) {

// 全角チェック

String targetStr = String.valueOf(target);

if (targetStr.length() != targetStr.getBytes().length) {

return false;

}

// 数字チェック

return Character.isDigit(target);

}

private static boolean isAlphabet(char target) {

// 全角チェック

String targetStr = String.valueOf(target);

if (targetStr.length() != targetStr.getBytes().length) {

return false;

}

// 英字チェック

Character character = new Character(target);

if (!(character.hashCode() >= new Character('A').hashCode()

&& character.hashCode() <= new Character('Z').hashCode())

&& !(character.hashCode() >= new Character('a').hashCode()

&& character.hashCode() <= new Character('z').hashCode())) {

return false;

}

return true;

}

private static boolean isSymbol(char target) {

// 全角チェック

String targetStr = String.valueOf(target);

if (targetStr.length() != targetStr.getBytes().length) {

return false;

}

// 号チェック

Character character = new Character(target);

if (!(character.hashCode() >= new Character(' ').hashCode()

&& character.hashCode() <= new Character('/').hashCode())

&& !(character.hashCode() >= new Character(':').hashCode()

&& character.hashCode() <= new Character('@').hashCode())

&& !(character.hashCode() >= new Character('[').hashCode()

&& character.hashCode() <= new Character('`').hashCode())

&& !(character.hashCode() >= new Character('{').hashCode()

&& character.hashCode() <= new Character('~').hashCode())) {

return false;

}

return true;

}