- import java.io.UnsupportedEncodingException;
- public class StringUtil {
- public static String subString(String text, int length, String endWith) {
- int textLength = text.length();
- int byteLength = 0;
- StringBuffer returnStr = new StringBuffer();
- for(int i = 0; i<textLength && byteLength < length*2; i++){
- String str_i = text.substring(i, i+1);
- if(str_i.getBytes().length == 1){//英文
- byteLength++;
- }else{//中文
- byteLength += 2 ;
- }
- returnStr.append(str_i);
- }
- try {
- if(byteLength<text.getBytes("GBK").length){//getBytes("GBK")每个汉字长2,getBytes("UTF-8")每个汉字长度为3
- returnStr.append(endWith);
- }
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- return returnStr.toString();
- }
测试:
- public static void main(String[] args) {
- String text = "。发.。篇>所q阿s似hf的f**发千万s";
- for(int i = 0; i< text.length();i++){
- String s = StringUtil.subString(text,i+1,"...");
- System.out.println(s+"--------------------------"+(i+1));
- }
- }
结果:
- 。...--------------------------1
- 。发...--------------------------2
- 。发.。...--------------------------3
- 。发.。篇...--------------------------4
- 。发.。篇>...--------------------------5
- 。发.。篇>所...--------------------------6
- 。发.。篇>所q阿...--------------------------7
- 。发.。篇>所q阿s...--------------------------8
- 。发.。篇>所q阿s似...--------------------------9
- 。发.。篇>所q阿s似hf...--------------------------10
- 。发.。篇>所q阿s似hf的...--------------------------11
- 。发.。篇>所q阿s似hf的f*...--------------------------12
- 。发.。篇>所q阿s似hf的f**...--------------------------13
- 。发.。篇>所q阿s似hf的f**发...--------------------------14
- 。发.。篇>所q阿s似hf的f**发千...--------------------------15
- 。发.。篇>所q阿s似hf的f**发千万...--------------------------16
- 。发.。篇>所q阿s似hf的f**发千万s--------------------------17
- 。发.。篇>所q阿s似hf的f**发千万s--------------------------18
- 。发.。篇>所q阿s似hf的f**发千万s--------------------------19
- 。发.。篇>所q阿s似hf的f**发千万s--------------------------20
- 。发.。篇>所q阿s似hf的f**发千万s--------------------------21
结果分析:
当截取后的字符串里面有奇数个英文字符,且最后一个是中文字符,这时会多出半个汉字长度
当截取后的字符串里面有偶数个英文字符,且最后一个是英文字符,这时会少出半个汉字长度
这是正常的
相关推荐
delphi 实现截取字符串中中文+英文混合截取,当字符串中包含中文和英文支付时,有时候会将一个中文截取1半,出现乱码。该demo能很好的解决该问题
ASP中英文混合字符串的截取 ASP中英文混合字符串的截取
主要为大家详细介绍了Java截取中英文混合字符串的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
解决截取字符串中带有汉字的问题,以防截取时汉字截取一般出现错误情况
可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码
13年(实习期间)飞娱互动有限公司面试游戏开发客户端/服务器端时的面试题的第一道编程题,当时就差这题没做出来,回去后想出来的。 截取一定长度的字符串,保证不把汉字截断。
本人为了C++课程设计写的字符串处理头文件,支持中英文混合处理,多重通配符等等.
java中英文字符串截取
c#截取指定长度 中英文混合字符串 一个中文为两个字符计算,英文一个字符。
主要为大家详细介绍了java实现中英文混合字符的截取方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了php 截取中英文混合字符串,需要的朋友可以参考下
SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串
即使是10W条记录也能在1S没迅速完成你所得结果,中英混合的 如果想学习的朋友请关注下 欢迎大家下载
//不分中英文按字符串长度循环每个字符截取换行 这个是隔10个字符换行一次 String psStr="asdfghjklzxcvbnmzxcvbnmsdfghaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbb"; String aa=""; String bb=""; for (int i...
自己输入一个字符串,字符串中可以包括字符和汉字,截取指定的字符串
java 字符串截取工具类java 字符串截取工具类
java 字符串截取类,兼容中英文及日韩文字格式
给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...
java字符串截取 - 中英文操作系统处理字符汉字