MaxCompute UDF系列之判断字符串中是否包含汉字

为了验证字符串中是否包含中文汉字,今天为大家提供一个自动判断中文字符的MaxCompute UDF,下载地址见附件。

效果如下:

MaxCompute UDF代码如下:

package com.yinlin.udf.dev;

import com.aliyun.odps.udf.UDF;
// 根据Unicode编码完美的判断中文汉字和符号
public class Han extends UDF {
  public String evaluate(String inputHan){
  if (inputHan == null) {return inputHan;}
  char[] input = inputHan.trim().toCharArray(); 

     for (int i = 0; i < input.length; i++) {
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(input[i]);
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
            || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
            || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
            || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
            || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
            || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
            || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
          //System.out.println(input[i]);
          return "1";
        }
     }
    return "0";
  }
}

使用方法:

1、通过Eclipse将Han.java编译成Jar包,命名为han_udf.jar。

2、通过大数据开发套件,上传资源han_udf.jar;

3、通过大数据开发套件,引用第二步上传的han_udf.jar资源,注册han函数;

4、通过大数据开发套件新建SQL脚本,输入SQL函数进行测试。

--创建虚拟表
CREATE TABLE IF NOT EXISTS dual (id STRING);
insert into table dual select '1' from (select count(1) from dual) t;

--根据Unicode编码完美的判断中文汉字和符号
select han('yinLin123%') from yinlin_demo.dual limit 1;

--根据Unicode编码完美的判断中文汉字和符号
select han('隐林yinLin123%') from yinlin_demo.dual limit 1;

到此为止,实验完成。

常见问题

Q:无结果?

我们在创建虚拟dual表的时候,一定要保证表中有数据。

Q:无法找到han函数?

利用大数据开发套件注册han函数的时候需要包名+类名,否则会找不到类。

阿里巴巴大数据-玩家社区 /

---阿里大数据博文,问答,社群,实践,有朋自远方来,不亦说乎……

时间: 2024-10-09 16:54:48

MaxCompute UDF系列之判断字符串中是否包含汉字的相关文章

php 判断字符串中是否包含html标签

 本篇文章主要是对使用php判断字符串中是否包含html标签的实例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 function judgeHtml($str){  if($str != strip_tags($str)){   echo '有';  }else{   echo '无';  } } judgeHtml('<p>a'); echo '<br />'; judgeHtml('a'); 输出:有        无   

Java判断字符串中是否包含中文方法_java

今天和同事在讨论一个问题,需要检查"输入的字符串中是否包含中文",刚开始想到是用正则表达式,正则表达式中是以[u4e00-u9fa5]来全匹配字符是否是中文,但现在面临的问题是这个字符串中还可能包含英文字符.数字.特殊字符,一时也没想出能匹配该场景的正则表达式,后来在网上搜了下,可以使用Matcher类来解决该问题,大致的代码实现如下: import java.util.regex.Matcher; import java.util.regex.Pattern; public clas

Android中判断字符串中必须包含字母或者数字_Android

public static boolean isLetterDigit(String str){ boolean isDigit = false;//定义一个boolean值,用来表示是否包含数字 boolean isLetter = false;//定义一个boolean值,用来表示是否包含字母 for(int i=0 ; i if(Character.isDigit(str.charAt(i))){ //用char包装类中的判断数字的方法判断每一个字符 isDigit = true; } i

sql 判断字符串中是否包含数字和字母的方法_MsSql

判断是否含有字母 select PATINDEX('%[A-Za-z]%', 'ads23432')=0 (如果存在字母,结果>1) 判断是否含有数字 PATINDEX('%[0-9]%', '234sdf')=0 (如果存在数字,结果>1) 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字符串 , 数字 字母 js判断字符串包含字母.判断字符串包含字母.mssql 字符串包含.js 字符串包含判断.js判断包含某个字

sql 判断字符串中是否包含数字和字母的方法

判断是否含有字母 select PATINDEX('%[A-Za-z]%', 'ads23432')=0 (如果存在字母,结果>1) 判断是否含有数字 PATINDEX('%[0-9]%', '234sdf')=0 (如果存在数字,结果>1)

js search判断字符串中是否包含英文

 代码如下 复制代码 var str="111111"; if(str.search(/[a-zA-Z]+/)==-1){ document.write("木有英文"); }

php 判断字符串中是否包含html标签_php技巧

function judgeHtml($str){ if($str != strip_tags($str)){  echo '有'; }else{  echo '无'; }}judgeHtml('<p>a');echo '<br />';judgeHtml('a');输出:有       无

判断字符串中相同字符的个数

判断字符串中相同字符的个数  =============================  函 数 名:GetCount  作    用:判断字符串中相同字符的个数  参    数:  ==============================  Private Function GetCount(Strs,Word)   Dim N1,N2,N3   N1=Len(Strs)   N2=Len(Replace(Strs,Word,""))   N3=Len(Word)   GetC

jquery判断字符串中是否存在某个的字符串

  用jquery判断字符串中是否存在某个的字符串的实现代码 $(function(){ var str="sunny,woo"; var sear=new RegExp(','); if(sear.test(str)) { alert('Yes'); } var tag=','; if(str.indexOf(tag)!=-1) { alert('Yes'); } });