java判断字符串中是否含有中文

这感觉其实是一个不太正规的方法,只是我在写爬取网页的东西的时候突然想到这可以用来判断是否包含中文,就是利用编码转码的方法:
url中网址中不能直接包含中文,中文需要先经过编码转换成一串字符(例如”你好”>>”%E4%BD%A0%E5%A5%BD”),而英文经过编码后是不会改变的(”hello”>>”hello”),所以:

public class Test{

    public static boolean isChinese(String str) throws UnsupportedEncodingException
    {
        int len = str.length();
        for(int i = 0;i < len;i ++)
        {
            String temp = URLEncoder.encode(str.charAt(i) + "", "utf-8");
            if(temp.equals(str.charAt(i) + ""))
                continue;
            String[] codes = temp.split("%");
            //判断是中文还是字符(下面判断不精确,部分字符没有包括)
            for(String code:codes)
            {
                if(code.compareTo("40") > 0)
                    return true;
            }
        }
        return false;
    }

    public static void main(String[] args) throws Exception
    {
       while(true)
       {
           Scanner in = new Scanner(System.in);
           String temp = in.nextLine();
           System.out.println(temp + "是否含有中文:" + isChinese(temp));
       }
    }
}

最后得到结果:
result
但这里有一个必须注意的地方,因为部分字符经编码后也会变成%数字这种格式,所以还必须判断该数字代表的是字符还是中文的组成码,具体可根据URL编码表http://www.w3school.com.cn/tags/html_ref_urlencode.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值