java 中、日、韩、英字符串截取
2008-09-22 11:07
211 查看
StringTrimUtils,使用charArray,Java内部使用unicode,不用在意编码
java 代码
public class StringTrimUtils {
/**
* 截取一段字符的长度(汉、日、韩文字符长度为2),不区分中英文,如果数字不正好,则少取一个字符位
*
* @param str 原始字符串
* @param specialCharsLength 截取长度(汉、日、韩文字符长度为2)
* @return
*/
public static String trim(String str, int specialCharsLength) {
if (str == null || "".equals(str) || specialCharsLength < 1) {
return "";
}
char[] chars = str.toCharArray();
int charsLength = getCharsLength(chars, specialCharsLength);
return new String(chars, 0, charsLength);
}
/**
* 获取一段字符的长度,输入长度中汉、日、韩文字符长度为2,输出长度中所有字符均长度为1
* @param chars 一段字符
* @param specialCharsLength 输入长度,汉、日、韩文字符长度为2
* @return 输出长度,所有字符均长度为1
*/
private static int getCharsLength(char[] chars, int specialCharsLength) {
int count = 0;
int normalCharsLength = 0;
for (int i = 0; i < chars.length; i++) {
int specialCharLength = getSpecialCharLength(chars[i]);
if (count <= specialCharsLength - specialCharLength) {
count += specialCharLength;
normalCharsLength++;
} else {
break;
}
}
return normalCharsLength;
}
/**
* 获取字符长度:汉、日、韩文字符长度为2,ASCII码等字符长度为1
* @param c 字符
* @return 字符长度
*/
private static int getSpecialCharLength(char c) {
if (isLetter(c)) {
return 1;
} else {
return 2;
}
}
/**
* 判断一个字符是Ascill字符还是其它字符(如汉,日,韩文字符)
*
* @param char c, 需要判断的字符
* @return boolean, 返回true,Ascill字符
*/
private static boolean isLetter(char c) {
int k = 0x80;
return c / k == 0 ? true : false;
}
}
java 代码
public class StringTrimUtils {
/**
* 截取一段字符的长度(汉、日、韩文字符长度为2),不区分中英文,如果数字不正好,则少取一个字符位
*
* @param str 原始字符串
* @param specialCharsLength 截取长度(汉、日、韩文字符长度为2)
* @return
*/
public static String trim(String str, int specialCharsLength) {
if (str == null || "".equals(str) || specialCharsLength < 1) {
return "";
}
char[] chars = str.toCharArray();
int charsLength = getCharsLength(chars, specialCharsLength);
return new String(chars, 0, charsLength);
}
/**
* 获取一段字符的长度,输入长度中汉、日、韩文字符长度为2,输出长度中所有字符均长度为1
* @param chars 一段字符
* @param specialCharsLength 输入长度,汉、日、韩文字符长度为2
* @return 输出长度,所有字符均长度为1
*/
private static int getCharsLength(char[] chars, int specialCharsLength) {
int count = 0;
int normalCharsLength = 0;
for (int i = 0; i < chars.length; i++) {
int specialCharLength = getSpecialCharLength(chars[i]);
if (count <= specialCharsLength - specialCharLength) {
count += specialCharLength;
normalCharsLength++;
} else {
break;
}
}
return normalCharsLength;
}
/**
* 获取字符长度:汉、日、韩文字符长度为2,ASCII码等字符长度为1
* @param c 字符
* @return 字符长度
*/
private static int getSpecialCharLength(char c) {
if (isLetter(c)) {
return 1;
} else {
return 2;
}
}
/**
* 判断一个字符是Ascill字符还是其它字符(如汉,日,韩文字符)
*
* @param char c, 需要判断的字符
* @return boolean, 返回true,Ascill字符
*/
private static boolean isLetter(char c) {
int k = 0x80;
return c / k == 0 ? true : false;
}
}
相关文章推荐
- 讲字符串按照字节截取 JAVA
- java按字节截取字符串
- Java正则表达式之截取字符串
- java中常用的字符串的截取方法
- Java精确截取字符串/获取字符串前指定长度字符函数
- java按字节截取字符串
- java 中将字符串中运算符之间的变量截取出来
- (JAVA)截取中英文混合字符串
- java 判断一个字符串中的数字:是否为数字、是否包含数字、截取数字
- java---字符串操作(分割,大小写转化,去除首末空格,截取字串,转化成字符数组)
- java 字符串截取的几种方式
- java中常用的字符串的截取方法
- java java中subString、split、stringTokenizer三种截取字符串方法的性能比较
- 学习了,使用Java截取字符串的方法
- java截取字符串方式:split()与subString()方法
- JAVA放射和字符串截取-----随笔
- java从字符串中截取数字
- java获取文件扩展名的方法小结【正则与字符串截取】
- java中判断一个字符串是否都为数字和截取数字
- Java 字符串截取问题