/**
* 判断一个字符是Ascill字符还是其它字符(如汉,日,韩文字符)
*
* @param char
* c, 需要判断的字符
* @return boolean, 返回true,Ascill字符
*/
public static boolean isLetter(char c) {
int k = 0x80;
return c / k == 0 ? true : false;
}
/**
* 得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为2,英文字符长度为1
*
* @param String
* s ,需要得到长度的字符串
* @return int, 得到的字符串长度
*/
public static int length(String s) {
if (s == null)
return 0;
char[] c = s.toCharArray();
int len = 0;
for (int i = 0; i < c.length; i++) {
len++;
if (!isLetter(c[i])) {
len++;
}
}
return len;
}
/**
* 截取一段字符的长度,不区分中英文,如果数字不正好,则少取一个字符位
*
* @author patriotlml
* @param String
* origin, 原始字符串
* @param int
* len, 截取长度(一个汉字长度按2算的)
* @return String, 返回的字符串
*/
public static String substring(String origin, int len) {
if (origin == null || origin.equals("")||len<1)
return "";
byte[] strByte = new byte[len];
if (len > length(origin)){
return origin;}
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;
}
return new String(strByte, 0, len);
}
static String FirstNBytes(String s, int n) {
Pattern p = Pattern.compile("^[\\u4e00-\\u9fa5]$");
int i = 0, j = 0;
for (char c : s.toCharArray()) {
Matcher m = p.matcher(String.valueOf(c));
i += m.find() ? 2 : 1;
++j;
if (i == n)
break;
if (i > n) {
--j;
break;
}
}
return s.substring(0, j);
}
public static void main(String args[]) {
String a = "我ABC汉DEF";
for (int i = 0; i < 11; ++i)
System.out.println("No." + i + ":" + FirstNBytes(a, i));
}
分享到:
相关推荐
java字符串截取 - 中英文操作系统处理字符汉字
java截取字符串-中英文; 中英文操作系统均可以正常运行; 希望能给大家帮助
delphi 实现截取字符串中中文+英文混合截取,当字符串中包含中文和英文支付时,有时候会将一个中文截取1半,出现乱码。该demo能很好的解决该问题
可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码
即使是10W条记录也能在1S没迅速完成你所得结果,中英混合的 如果想学习的朋友请关注下 欢迎大家下载
ASP中英文混合字符串的截取 ASP中英文混合字符串的截取
截取含有中英文的字符串,按字节进行截取,当出现汉字时不能截取半个汉字要把汉字补全。
java中英文字符串截取
13年(实习期间)飞娱互动有限公司面试游戏开发客户端/服务器端时的面试题的第一道编程题,当时就差这题没做出来,回去后想出来的。 截取一定长度的字符串,保证不把汉字截断。
本人为了C++课程设计写的字符串处理头文件,支持中英文混合处理,多重通配符等等.
便于英文和中文的区别,这个是专门截取字符串的,例如英文abcd截取4位,中文值截取2位!很简单!
java 字符串截取类,兼容中英文及日韩文字格式
//不分中英文按字符串长度循环每个字符截取换行 这个是隔10个字符换行一次 String psStr="asdfghjklzxcvbnmzxcvbnmsdfghaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbb"; String aa=""; String bb=""; for (int i...
批量统计多字符串中[中英文标点数量],根据给定gbk/utf编码,计算出总长度。若总长度超过给定(最大)长度,则自动截取。使用场景:配合注解以及aop,解决录入数据库超长会报错的情况。
本文实例讲述了C#区分中英文按照指定长度截取字符串的方法。分享给大家供大家参考。具体如下: 这段C#代码用于按照指定的长度截取字符串,一个中文字符算2个字符,按照这个方法截取的字符串基本可以保持显示长度一致...
Pb字符串中的中文和英文(含符号)拆分 如: '中字A文C' 拆分成: '中字文' 'AC'
主要介绍了C#实现中英文混合字符串截取的方法,是C#字符串操作的常用方法,需要的朋友可以参考下
用js方法substring()、方法substr()实现如标题所示的截取字符串并支持中英文混合,具体代码如下,感兴趣的各位可以参考下哈
c#截取指定长度 中英文混合字符串 一个中文为两个字符计算,英文一个字符。
NULL 博文链接:https://onestopweb.iteye.com/blog/2394281