1. 中日韩统一表意文字(CJK Unified Ideographs),目的是要把分别来自中文、日文、韩文、越文中,本质、意义相同、形状一样或稍异的表意文字。其在统一编码 UNICODE 中的范围:4E00..9FFF。常用汉字 的unicode 码范围是:\u4e00-\u9fa5。 据此,可以编写JAVA 代码来提取常用汉字。鉴于你的字符串中的逗号字符的UNICODE 是 65292,若要提取中文名加逗号,那代码可以写成:
public class CJK{
public static void main(String[] args) {
String data=
"张三dkjsg,李小四skchduilh,王五dhskl,欧阳大神dhh";
for (int i=0;i<data.length();i++){
int n =(int)data.charAt(i);
if (((n>=19968) && (n<=40869)) || n==65292)
System.out.print(data.charAt(i));
}
}
}
输出:
张三,李小四,王五,欧阳大神
2. 利用定义了分隔符的令牌字符串 java.util.StringTokenizer, 也可以提取中文名称。
import java.util.*;
public class Chinese_Selected {
public static void main(String args[]){
String text="张三dkjsg,李小四skchduilh,王五dhskl,欧阳大神dhh,.....";
/*定义分隔符仅为英文大小写字母:a,b,....x,y,z,A,B,....X,Y,Z,保留其它字符 */
String delim = "a";
for (int i=98;i<=122;i++)
delim += "," + (char)i ;
for (int i=65;i<=90;i++)
delim += "," + (char)i ;
/* 生成定义了分隔符的字符串,以便取出令牌,即中文名称 */
StringTokenizer s = new StringTokenizer(text, delim);
while(s.hasMoreTokens()) {//while循环体的条件是:有下一个令牌
String ss = s.nextToken();//获取下一个中文中文字符串令牌
System.out.print(ss + " ");
}
}
}
3. 当然,使用正则表达式,也能奏效。
import java.lang.*;
import java.util.regex.*;
import java.io.*;
public class Regular_Expression {
private static String draw(String content){
StringBuffer english = new StringBuffer();
String regex = "[\u4e00-\u9fa5。,?”“《》:!——-、]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
while(matcher.find())
{
String temp = matcher.group();
english.append(temp);
}
return english.toString();
}
public static void Regular_Expression(String path){
FileInputStream fr;
BufferedReader br;
FileWriter fw;
BufferedWriter bw = null ;
try{
fr = new FileInputStream(path);
br = new BufferedReader(new InputStreamReader(fr,"gb2312"));
fw = new FileWriter("new1.txt");
bw = new BufferedWriter(fw);
String str = null;
StringBuffer sb = new StringBuffer();
while((str = br.readLine()) != null) {
sb.append(str + "\n");
}
String temp = draw(sb.toString());
System.out.println(temp);
bw.write(temp);
} catch (FileNotFoundException e){
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
finally{
try{
if(bw != null) bw.close();
} catch (IOException e){
e.printStackTrace();
}
}
}
public static void main(String[] args){
Regular_Expression("draw1.txt");
}
}