现在,打算挨个理解一下这个java版本的jieba组件程序!
package com.huaban.analysis.jieba;
import java.util.regex.Pattern;
这个是这个类的引用,正则表达式的一种已编译的实现。
public static Pattern reSkip = Pattern.compile("(\\d+\\.\\d+|[a-zA-Z0-9]+)");
private static final char[] connectors = new char[] { '+', '#', '&', '.', '_', '-' };
这个是定义的一些匹配行为?
public static boolean isChineseLetter(char ch) {
if (ch >= 0x4E00 && ch <= 0x9FA5)
return true;
return false;
}
所有汉字的unicode编码列表 从4E00-9FCF?这段程序和这个解释对不上啊!这段程序大概是说是否是中文字符??
public static boolean isEnglishLetter(char ch) {
if ((ch >= 0x0041 && ch <= 0x005A) || (ch >= 0x0061 && ch <= 0x007A))
return true;
return false;
}
U+0041 A 拉丁字母 A!
https://blog.csdn.net/qq_33187168/article/details/50285187 Unicode字符列表
这个程序居然是unicode字符的!我都改成UTF-8格式了!!!
public static boolean isDigit(char ch) {
if (ch >= 0x0030 && ch <= 0x0039)
return true;
return false;
}
U+0030 0 数字 0;U+0039 9 数字 9;表示,是否是数字的意思吧!
public static boolean isConnector(char ch) {
for (char connector : connectors)
if (ch == connector)
return true;
return false;
}
这个应该表示是否是连字符!因为前面定义了这些符号:private static final char[] connectors = new char[] { '+', '#', '&', '.', '_', '-' };
public static boolean ccFind(char ch) {
if (isChineseLetter(ch))
return true;
if (isEnglishLetter(ch))
return true;
if (isDigit(ch))
return true;
if (isConnector(ch))
return true;
return false;
}
这个函数应该是,是否找到了上述几类的字符的意思,找到了返回true,找不到返回false!
public static char regularize(char input) {
if (input == 12288) {
return 32;
}
else if (input > 65280 && input < 65375) {
return (char) (input - 65248);
}
else if (input >= 'A' && input <= 'Z') {
return (input += 32);
}
return input;
}
这个用来规范字符格式的:全角 to 半角,大写 to 小写;暂时不知道input具体是指的什么意思!
https://tool.oschina.net/commons?type=4
ASCII码对照表工具