`
baalwolf
  • 浏览: 350631 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java截取中英文混合字符串 等宽显示

 
阅读更多
Java代码  收藏代码
  1. import java.io.UnsupportedEncodingException;  
  2.   
  3. public class StringUtil {  
  4.       
  5.     public static String subString(String text, int length, String endWith) {        
  6.         int textLength = text.length();  
  7.         int byteLength = 0;  
  8.         StringBuffer returnStr =  new StringBuffer();  
  9.         for(int i = 0; i<textLength && byteLength < length*2; i++){  
  10.             String str_i = text.substring(i, i+1);   
  11.             if(str_i.getBytes().length == 1){//英文  
  12.                 byteLength++;  
  13.             }else{//中文  
  14.                 byteLength += 2 ;  
  15.             }  
  16.             returnStr.append(str_i);  
  17.         }  
  18.         try {  
  19.             if(byteLength<text.getBytes("GBK").length){//getBytes("GBK")每个汉字长2,getBytes("UTF-8")每个汉字长度为3  
  20.                 returnStr.append(endWith);  
  21.             }  
  22.         } catch (UnsupportedEncodingException e) {  
  23.             e.printStackTrace();  
  24.         }  
  25.         return returnStr.toString();  
  26.     }  


测试: 

Java代码  收藏代码
  1. public static void main(String[] args) {  
  2.                   
  3.         String text = "。发.。篇>所q阿s似hf的f**发千万s";  
  4.         for(int i = 0; i< text.length();i++){  
  5.             String s = StringUtil.subString(text,i+1,"...");  
  6.             System.out.println(s+"--------------------------"+(i+1));  
  7.         }  
  8.           
  9.     }  


结果: 

Java代码  收藏代码
  1. 。...--------------------------1  
  2. 。发...--------------------------2  
  3. 。发.。...--------------------------3  
  4. 。发.。篇...--------------------------4  
  5. 。发.。篇>...--------------------------5  
  6. 。发.。篇>所...--------------------------6  
  7. 。发.。篇>所q阿...--------------------------7  
  8. 。发.。篇>所q阿s...--------------------------8  
  9. 。发.。篇>所q阿s似...--------------------------9  
  10. 。发.。篇>所q阿s似hf...--------------------------10  
  11. 。发.。篇>所q阿s似hf的...--------------------------11  
  12. 。发.。篇>所q阿s似hf的f*...--------------------------12  
  13. 。发.。篇>所q阿s似hf的f**...--------------------------13  
  14. 。发.。篇>所q阿s似hf的f**发...--------------------------14  
  15. 。发.。篇>所q阿s似hf的f**发千...--------------------------15  
  16. 。发.。篇>所q阿s似hf的f**发千万...--------------------------16  
  17. 。发.。篇>所q阿s似hf的f**发千万s--------------------------17  
  18. 。发.。篇>所q阿s似hf的f**发千万s--------------------------18  
  19. 。发.。篇>所q阿s似hf的f**发千万s--------------------------19  
  20. 。发.。篇>所q阿s似hf的f**发千万s--------------------------20  
  21. 。发.。篇>所q阿s似hf的f**发千万s--------------------------21  



结果分析: 
当截取后的字符串里面有奇数个英文字符,且最后一个是中文字符,这时会多出半个汉字长度 
当截取后的字符串里面有偶数个英文字符,且最后一个是英文字符,这时会少出半个汉字长度 

这是正常的

分享到:
评论

相关推荐

    Java截取中英文混合字符串的方法

    Java截取中英文混合字符串的方法 Java截取中英文混合字符串的方法是指在Java语言中截取混合了中英文的字符串,并且保证汉字不被截半个的方法。这种方法在实际开发中非常有用,特别是在处理中文字符串时。 在Java中...

    java实现中英文混合字符截取方法

    这种方法主要用于解决在 Java 中截取字符串时遇到的问题,即在截取中英文混合字符串时如何避免汉字被截半个。 在 Java 中,字符串是以 Unicode 编码方式存储的,每个字符占用 2 个字节。因此,在截取字符串时需要...

    java 中字符串只中英数字混合需要分割的解决办法

    这个方法用来处理java中可能有一些特别的需要,一大串中英文混合,需要中间截断或是中英中间添加一些特别的标识,调用这个方法 第一个参数是要处理的字符串,第二个是要在中英字符中间插入的字符。调用就可以得到想...

    [待删除]字符串截取 - 中英文

    因此,当在Java程序中处理包含中英文混合的字符串时,必须考虑到编码差异,以避免截取错误或乱码的出现。 ### 实践应用 在实际开发中,特别是在Web开发、文本分析等领域,正确处理多语言字符串是非常关键的。使用...

    Java精确截取字符串.pdf

    在Java编程中,有时我们需要对字符串进行精确截取,以便适应特定的需求,比如在网页显示、数据存储或者传输时限制长度。本篇将探讨如何在Java中实现这一功能。 首先,最常见的一种方法是使用`substring()`方法。...

    java字符串处理-中英文-非常有用的

    在Java中,处理字符串是非常常见且重要的任务之一,尤其是在涉及到国际化应用时,如何高效准确地处理中英文混合的字符串就显得尤为重要了。本文将基于提供的代码片段来探讨几种不同的Java字符串处理方法,并着重分析...

    java按字节截取带有汉字的字符串的解法(推荐)

    在Java编程语言中,处理包含汉字的字符串时,由于汉字在不同编码格式下占用的字节数不同,按字节截取字符串会面临特殊挑战。本文将深入探讨如何正确地按字节截取带有汉字的字符串,以确保不出现半字符或者乱码的情况...

    截取中英混合的固定个数表格回显办法

    根据给定的信息,本文将详细解释如何在Java中处理中英文混合字符串的截取问题,尤其是在需要固定长度显示的情况下。 ### 一、问题背景 在实际应用开发中,经常需要处理包含中文和英文字符的字符串。例如,在一个...

    javascript截取字符串(通过substring实现并支持中英文混合)

    javascript截取字符串(支持中英文混合) 代码如下: [removed] var sub=function(str,n){ var r=/[^\x00-\xff]/g; if(str.replace(r,”mm”).length&lt;=n){return str;} var m=Math.floor(n/2); for(var i=m;i&lt;str&gt;=n...

    javascript中使用正则计算中文长度的例子

    在中文和英文混合的文本中,由于中文字符宽度通常大于英文字符宽度,若按英文字符宽度截取中文字符,或按中文字符宽度截取英文字符,很可能会导致显示效果不佳。例如,截取一个昵称时,如果使用英文的标准截取方式,...

    ASP200问.EXE

    18.如何计算中英文混合字符串的长度 19.如何判断字符串是否以指定字符串开头或结尾 20.如何判断字符是否是英文字符 21.如何检测字符串出现的次数 22.如何过滤字符串中的HTML代码 23.如何截取字符串 24.如何实现字符...

    FreeMark学习笔记

    截取子串可以根据字符串的索引来进行,截取子串时如果只指定了一个索引值,则用于取得字符串中指定索引所对应的字符;如果指定两个索引值,则返回两个索引中间的字符串子串.假如有如下数据模型: Map root = new HashMap...

    2021-2022计算机二级等级考试试题及答案No.14663.docx

    12. VB6.0中截取字符串:在VB6.0中,使用LEFT函数可以截取字符串,例如`LEFT("Visual Basic 6.0",6)`将返回"Visual"。 13. 软件工程管理:软件工程的理论和技术性研究不仅包括软件开发技术,还包括软件工程管理,以...

Global site tag (gtag.js) - Google Analytics