4

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

所以我这样测试过:

 /* 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' ;
}

但并非所有全角和半角字符都可以。

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

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

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

半角字符=アデチャエウィオプ</p>

全角字符 = asdファsヂオppp

非常感谢!

4

3 回答 3

1

使用数字,您可以使用此代码

    /**
 * Full-angle string conversion half-corner string
 * 1, half-width characters are starting from 33 to 126 end
 * 2, the full-width character corresponding to the half-width character is from 65281 start to 65374 end
 * 3, the half corner of the space is 32. The corresponding Full-width space is 12288
 * The relationship between Half-width and Full-width is obvious, except that the character offset is 65248 (65281-33 = 65248).
 *
 * @param fullWidthStr Non-empty full-width string
 * @return Half-angle string
 */
public String halfWidth2FullWidth(String fullWidthStr) {
    if (null == fullWidthStr || fullWidthStr.length() <= 0) {
        return "";
    }
    char[] arr = fullWidthStr.toCharArray();
    for (int i = 0; i < arr.length; ++i) {
        int charValue = (int) arr[i];
        if (charValue >= 33 && charValue <= 126) {
            arr[i] = (char) (charValue + 65248);
        } else if (charValue == 32) {
            arr[i] = (char) 12288;
        }
    }
    return new String(arr);
}
于 2020-02-19T04:27:41.223 回答
1
于 2016-02-27T05:47:09.380 回答
0

检查全尺寸字符

isFullSizeCharacter(value) {
    for (let i = 0; i < value?.length; i++) {
       const code = value.charCodeAt(i);
       if ((code >= 0x0020 && code <= 0x1fff) || (code >= 0xff61 && code <= 0xff9f)) {
          return false;
       }
    }
    return !!(value && 'string' === typeof value) && true;
}

或者

preg_match('/^[^ -~。-゚\x00-\x1f\t]+$/u', $value)

或者 如何检查字符串在java中是否有全角字符

于 2022-02-28T02:53:20.590 回答