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

该博客探讨了如何在Java中编写一个方法来检查输入字符串是否仅包含半角英字、数字、记号、全角及半角カナ、全角及半角的汉字。已实现对半角英字、数字和记号的判断,但需完善对全角カナ和汉字的判断。文章提出了对全角字符的初步检查,但未提供完整解决方案。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

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

/**

* 指定された文字列が半角英字(大文字、小文字ともに可)か半角数字、半角记号として使用可能かどうかを判别します。

* 文字列が半角英字(大文字、小文字ともに可)か半角数字、半角记号のみで

* 构成されていればtrueを返します。

* @pre $none

* @post $none

* @param target 対象文字列。

* @return true:文字列は半角英字、半角数字、または半角记号。false:文字列は半角英字、半角数字、半角记号以外。

*/

public static boolean isAlphabetOrNumberOrSymbolOrKana(String target) {

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

return false;

}

// 全角チェック

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

return false;

}

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

for (int i = 0; i 

char targetChar = target.charAt(i);

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

return false;

}

}

return true;

}

/**

* 指定された文字が半角数字かどうかを判别します。

* 文字が半角数字の场合trueを返します。

* @pre $none

* @post $none

* @param target 対象文字。

* @return true:文字は半角数字。false:文字は半角数字以外。

*/

private static boolean isNumber(char target) {

// 全角チェック

String targetStr = String.valueOf(target);

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

return false;

}

// 数字チェック

return Character.isDigit(target);

}

/**

* 指定された文字が半角英字かどうかを判别します。

* 文字が半角英字(大文字、小文字ともに可)の场合trueを返します。

* @pre $none

* @post $none

* @param target 対象文字。

* @return true:文字は半角英字。false:文字は半角英字以外。

*/

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;

}

/**

* 指定された文字が半角记号かどうかを判别します。

* 文字が半角记号の场合trueを返します。

* @pre $none

* @post $none

* @param target 対象文字。

* @return true:文字は半角记号。false:文字は半角记号以外。

*/

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值