Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确保不输入非ascii unicode字符?_Java_Unicode_Character Encoding - Fatal编程技术网

Java 如何确保不输入非ascii unicode字符?

Java 如何确保不输入非ascii unicode字符?,java,unicode,character-encoding,Java,Unicode,Character Encoding,给定一个java.lang.String实例,我想验证它不包含任何非ASCII字母数字的unicode字符。e、 g.管柱应限于[A-Za-z0-9]。我现在做的事情效率很低: import org.apache.commons.lang.CharUtils; String s = ...; char[] ch = s.toCharArray(); for( int i=0; i<ch.length; i++) { if( ! CharUtils.isAsciiAlphanume

给定一个java.lang.String实例,我想验证它不包含任何非ASCII字母数字的unicode字符。e、 g.管柱应限于[A-Za-z0-9]。我现在做的事情效率很低:

import org.apache.commons.lang.CharUtils;

String s = ...;
char[] ch = s.toCharArray();
for( int i=0; i<ch.length; i++)
{
    if( ! CharUtils.isAsciiAlphanumeric( ch[ i ] )
        throw new InvalidInput( ch[i] + " is invalid" );
}
import org.apache.commons.lang.CharUtils;
字符串s=。。。;
char[]ch=s.toCharArray();
对于(int i=0;i您可以使用

input.matches("[A-Za-z0-9.]+")

是的,有一个更好的方法来解决这个问题。您已经编写了模式,为什么不使用正则表达式来验证它呢?与其抛出包含无效字符的异常,不如使用一条通用错误消息,说“输入包含无效字符”(有效字符为a-z和0-9)”。

尝试以下操作:

private boolean isBasicLatin(String input)
{
    for (char c : input.toCharArray())
    {
        if (!UnicodeBlock.BASIC_LATIN.equals(UnicodeBlock.of(c)))
        {
            return false;
        }
    }

    return true;
}

不,应该是
!input.matches([^A-Za-z0-9.])
输入。matches([A-Za-z0-9.])
表示字符串的长度正好是一个字符。正则表达式应该是
[A-Za-z0-9.]+
,或者
[A-Za-z0-9.]*
如果允许长度为零的字符串。