gpt4 book ai didi

java - 如何知道半角或全角字符?

转载 作者:行者123 更新时间:2023-12-01 14:30:44 24 4
gpt4 key购买 nike

我想知道字符串中包含的字符是半角还是全角。

所以我进行了这样的测试:

 /* Checking typing password is valid or not.
* If length of typing password is less than 6 or
* is greater than 15 or password is composed by full-width character at least one,
* it will return false.
* If it is valid, it will return true.
* @param cmdl
* @param oldPassword
* @return
*/
public boolean isValidNewPassword(String password) {

if ((password.length() < 6)
|| (password.length() > 15) || (isContainFullWidth(password))) {
return false;
}

return true;
}

/**
* Checking full-width character is included in string.
* If full-width character is included in string,
* it will return true.
* If is not, it will return false.
* @param cmdl
* @return
*/
public boolean isContainFullWidth(String cmdl) {
boolean isFullWidth = false;
for (char c : cmdl.toCharArray()) {
if(!isHalfWidth(c)) {
isFullWidth = true;
break;
}
}

return isFullWidth;
}

/**
* Checking character is half-width or not.
* Unicode value of half-width range:
* '\u0000' - '\u00FF'
* '\uFF61' - '\uFFDC'
* '\uFFE8' - '\uFFEE'
* If unicode value of character is within this range,
* it will be half-width character.
* @param c
* @return
*/
public boolean isHalfWidth(char c)
{
return '\u0000' <= c && c <= '\u00FF'
|| '\uFF61' <= c && c <= '\uFFDC'
|| '\uFFE8' <= c && c <= '\uFFEE' ;
}

但是对于所有的全角和半角字符来说,这并不合适。

那么,我可以知道您对这个问题有什么建议吗?

半角和全角用于亚洲语言,例如日语

写日文字符时有全角和半角两种。

半角字=アデチ赝赝赝誊オプ

全角字符 = アsdファsヂオppp

非常感谢!

最佳答案

如果您只是想为 hankaku-zenkaku 配对的字符(例如 A )确定这一点,那么它们并不多,也不应该太多像您一样难以计算出它们的范围。

另一种常见但效率不高的方法是将它们转换为 Shift JIS 并计算产生的字节数:2 表示全角,1 表示半角。例如"ア".getBytes("MS932").length
在这种情况下,此类问题的目的通常是为了输入验证。 (即限制或转换其中之一)。在这种情况下,处理的字符范围自然是有限的(因为不能配对就不能转换),不需要支持整个Unicode集。

但是,如果您确实想为成熟的 Unicode 范围执行此操作,请获取 UCharacter.EastAsianWidth property使用 icu4j library可以做到这一点。请参阅此答案以了解如何走这条路:Analyzing full width or half width character in Java

关于java - 如何知道半角或全角字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13559050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com