一个可以截取包含中英文的字符串的函数
来源:互联网 发布:网络系统培训 编辑:程序博客网 时间:2024/04/27 23:17
保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
汉字算两个字节,字母算一个字节
public static boolean isLetter(char c) { //可以判断是否为汉字
int k=0X80;
return c/k==0?true:false;
}
public static int lengths(String strSrc){
if (strSrc==null) {
return 0;
}
int len=0;
char[] strChar=strSrc.toCharArray();
for (int i=0;i<strChar.length;i++){
len++;
if (!isLetter(strChar[i])) len++;
}
return len;
}
public static String subString(String origin,int len){
if (origin==null || origin.equals("")|| len<1){
return "";
}
if (len>lengths(origin)){
return origin;
}
byte[] strByte=new byte[len];
System.arraycopy(origin.getBytes(),0,strByte,0,len);
int count=0;
for (int i=0;i<len;i++){
int value=(int)strByte[i];
if (value<0) count++;
}
if (count % 2 !=0){
//len=(len==1)?++len:--len;
--len;
}
return new String(strByte,0,len);
}
public static void main(String[] args) {
System.out.println(""+ subString("我ABC汉DEF",6));
}
另外写啦一个测试isLetter()的方法
public class TestString {
public static boolean isLetter(char c) {
int k=0X80;
System.out.println(c/k);
return c/k==0?true:false;
}
public static void main(String[] args) {
String s="w实得分ws是否ds的a";
for(int i=0;i<s.length();i++){
isLetter(s.toCharArray()[i]);
}
}
}
输出结果为:
0
183
191
164
0
0
204
168
0
0
237
0
只有是汉字时c/k就会大于0
- 一个可以截取包含中英文的字符串的函数
- 包含中英文的字符串截取算法,与php系统字符串截取函数
- 支持中英文字符的字符串截取函数
- php截取字符串比较有用的。中英文都可以
- 含有中英文的字符串截取
- PHP截取中英文及标点符号混合的字符串函数
- 截取一个中英文混合的字符串,不能出现截取半个汉字的问题
- 截取包含汉字的字符串
- 截取包含中文的字符串
- Oracle截取中英文混合字符串的处理
- 截取字符串中英文字符的长度
- 如何正确截取中英文混合的字符串?
- 截取中英文长度一致的字符串
- .NET 截取中英文混合的字符串。
- c# 截取中英文字符串的简洁方法
- js 字符串截取(包含中英文)
- js 字符串截取(包含中英文)
- 编写一个截取字符串的函数
- poj 3624 Charm Bracelet 背包
- python中的构造函数和析构函数
- 上帝的晨光03
- (十二)动态语言扩展
- win8下安装 usb blaster
- 一个可以截取包含中英文的字符串的函数
- poj 2886 Who Gets the Most Candies?(线段树单点更新模拟约瑟夫环)
- HashMap和Hashtable的区别
- java学习笔记 标准for循环的执行过程
- hdu1851(SG博弈)
- 杨氏矩阵-分治法查找
- 广告点击率的贝叶斯平滑
- Git的分支
- Linux下的守护进程