日期:2014-05-20 浏览次数:20802 次
public class StringUtilTest
{
public static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
------解决方案--------------------
ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
------解决方案--------------------
ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
------解决方案--------------------
ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
------解决方案--------------------
ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
------解决方案--------------------
ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
return true;
}
return false;
}
public static String getChineseFromStr(String strName) {
char[] ch = strName.toCharArray();
String result = "";
for (int i = 0; i < ch.length; i++) {
char c = ch[i];
//如果有一个非中文,则返回错误
if (isChinese(c) == true) {
result += c;
}
}
return result;
}
public static void main(String[] args)
{
System.out.println(getChineseFromStr("快乐的中国人"));
}
}
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ChangeUnicodeString {
public static void main(String[] args) {
String s = "快乐的中国人";
String resultString = getNewString(s);
System.out.println("original sting is " + s);
System.out.println("after changing it is " + resultString);
}
/**
* 把含有unicode编码的字符串转成汉字。
* @param s
* @return 转换后的字符串。
*/
public static String getNewString(String s) {
//----------------- 定义正则匹配模式。
String regexString = "&#\\d{1,5};";// 代表unicode字符串 的正则表达式。
Pattern pattern = Pattern.compile(regexString);
Matcher matcher = pattern.matcher(s);
List<int[]> list = new ArrayList<int[]>();// 用于保存所有这种字符串的首位位置。
// ----------------- 遍历字符串,确定所有的unicode字串的位置,以整数数组形式放入List里。
while (matcher.find()) {
int[] intPosition = new int[2];// 记录起始及结束位置。
intPosition[0] = matcher.start();
intPosition[1] = matcher.end();
list.add(intPosition);
}
// ----------------- 开始转换
String result = "";// 保村最终结果。
int endP = s.length();
for (int i = list.size() - 1; i >= 0; i--) {// 循环替换所有的unicode 字符串为汉字。