手机(iphone)用户注册—emoji表情

Emoji的介绍参见wiki,emoji表情的Unicode编码范围为[0xE001,0xE05A]&[0xE101,0xE15A]&[0xE201,0xE253]&[0xE401&0xE44C]&[0xE501,0xE537]。

有关iphone中注册很多会用emoji表情,为了使实际名字唯一性,下面编写了去掉emoji表情的代码;我的思路是:根据byte来判断,代码如下:

 

public static String realname(String name)
	{	
		
		String realname = name;
		try{
			char[] myBuffer = name.toCharArray();
			
			StringBuffer sb = new StringBuffer();
	        for (int i = 0; i < name.length(); i++) {
	         UnicodeBlock ub = UnicodeBlock.of(myBuffer[i]);
	            if(ub == UnicodeBlock.BASIC_LATIN){
	             //英文及数字等
	             sb.append(myBuffer[i]);
	            }else if(ub == UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){
	             //全角半角字符
	             sb.append(myBuffer[i]);
	            }else{
	             //汉字
	             String temp = String.valueOf(myBuffer[i]);
	             if(judgeIfSpecial(temp.getBytes("unicode")))
	             {	            	 
	            
	            	 continue;
	             }else
	             {
	            	 sb.append(myBuffer[i]);
	             }
	            }
	        }
	       
	        realname = sb.toString();						
		}catch(Exception e)
		{
			System.out.println(e);
		} 
		return realname;
	}

以下为主要代码:

public static boolean judgeIfSpecial(byte[] c)
	{
		if(c.length != 2 && c.length != 4) return false;
		byte[] b = new byte[2];		
		if(c.length == 4) 
		{
			b[0] = c[2];
			b[1] = c[3];
		}else
		{
			b[0] = c[0];
			b[1] = c[1];
		}
		if(b[0] != -32 && b[0] != -31 && b[0] != -30 && b[0] != -28 && b[0] != -27 )
		{
			return false;
		}
		switch(b[0])
		{
		case -32: //0xe0   0xE001,0xE05A
			 if(b[1] >= 1 && b[1] <= 90 )   //0x01, 0x5A
			 {
				 return true;
			 }
			break;
		case -31: //0xe1   0xE101,0xE15A
			if(b[1] >= 1 && b[1] <= 90 )   //0x01, 0x5A
			 {
				 return true;
			 }
			break;
		case -30: //0xe2   0xE201,0xE253
			if(b[1] >= 1 && b[1] <= 83 )   //0x01, 0x53
			 {
				 return true;
			 }
			break;
		case -28: //0xe4   0xE401,0xE44C
			if(b[1] >= 1 && b[1] <= 76 )   //0x01, 0x4c
			 {
				 return true;
			 }
			break;
		case -27: //0xe5  0xE501,0xE537
			if(b[1] >= 1 && b[1] <= 55 )   //0x01, 0x37
			 {
				 return true;
			 }
			break;
		default:
			break;
		}
		return false;
	}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值