`

关于截取字符串长度 中文不能截取半个的问题

 
阅读更多
import java.io.UnsupportedEncodingException;



public class StrCut {
	public static void main(String[] args) throws Exception {
		System.out.println(subString("我abc你好asd",6));
	}
	
	public static String subString(String str,int len){   
        if(str == null && "".equals(str)){   
            return null;   
        }   
        //将字符串中的char数组转换成指定编码方式的byte数组的函数   
        byte[] strBytes = null;   
        try {   
            strBytes = str.getBytes("gbk"); 
        } catch (UnsupportedEncodingException e) {   
            e.printStackTrace();   
        }   
        //得到字符串的长度,判断截取字符串的长度是否在判断的范围内,否则返回原串   
        int strLen = strBytes.length;   
        if(len >= strLen || len < 1){   
            return str;   
        }   
        int count = 0;   
        for(int i=0; i<len; i++){   
            //将每个字节数组转换为整型数,因为后面根据值的正负来判断是否为汉字   
            int value = strBytes[i];   
            //如果是汉字(负),则统计截取字符串中的汉字所占字节数   
            if(value < 0){      
                count++;   
            }   
        }   
        //依据判断给定的字符串是否含有汉字,利用String类的substring()方法来截取不同的长度   
           
       //根据所统计的字节数,判断截取到字符是否为半个汉字,奇数为半个汉字   
        if(count % 2 !=0){   
            //如果在截取长度为1时,则将该汉字取出,   
            //其他情况则不截取这里的截取长度则按字符长度截取(截取字节长度数-截取汉字字节数/2-截取到的半个汉字的字节数)   
            len = (len == 1)?len:len-count/2-1;   
        }else{   
            //截取字符长度为字节长度-汉字所占字节长度/2(汉字占两个字节)   
            len = len-(count/2);   
        }   
            return str.substring(0,len);   
    }   
}

 以上为截取长度为6如果最后一个为中文则不显示的问题

 

分享到:
评论

相关推荐

    java编写一个截取字符串的函数,输入为一个字符串和字节数.docx

    Java 字符串截取函数 ...本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该函数使用 `substring` 方法来实现字符串截取,并且可以应用于各种字符串处理场景。

    ASP截取固定长度字符串

    因此,在截取字符串时需要注意字符的字节数量,以避免截取到半个汉字。 #### 二、自定义函数StrByteLeft()详解 为了更好地解决中文字符串截取问题,可以自定义一个函数`StrByteLeft()`来实现更精确的截取。 1. **...

    按字节长度截取字符串(支持截取带HTML代码样式的字符串)

    首先,理解为什么需要按照字节长度而不是字符长度截取字符串。在处理非ASCII字符(如中文、日文等)时,一个字符可能占用多个字节。如果单纯按字符长度截取,可能会导致截取到半字符,从而破坏字符串的读取。因此,...

    字符串 截取

    因此,如果直接按照字节数来截取字符串,可能会导致截取结果包含半个汉字,这显然是不希望看到的。 ### 实现细节分析 #### 1. 理解UTF-8编码 UTF-8是一种可变长度的Unicode编码格式,它支持所有Unicode字符,同时...

    Java精确截取字符串.doc

    面试中可能会遇到类似的问题,要求编写一个函数来截取字符串,确保汉字不被截半。以下是一个简单的示例实现: ```java public class SplitString { private String str; private int byteNum; public ...

    php不破坏单词截取子字符串类.zip

    3. 边界处理:类库可能还包含了处理边界情况的逻辑,例如当字符串长度小于截取长度时,如何返回原始字符串,或者当字符串长度远大于截取长度时,如何处理过多的字符。 4. 国际化支持:考虑到可能处理多种语言的字符...

    Java精确截取字符串.pdf

    总的来说,Java中精确截取字符串涉及到字符编码、字节长度计算等多个方面。对于不同的场景,需要选择合适的方法,确保截取后的字符串既能满足长度要求,又能正确显示其中的文本内容。在实际开发中,可以根据项目需求...

    Java 按照字节来截取字符串的代码(不会出现半个汉字)

    在Java编程中,有时我们需要按照字节长度来截取字符串,尤其在处理中文字符时,因为一个中文字符在UTF-8编码下占用两个字节,而一个英文字符仅占用一个字节。这样的需求通常出现在前端展示限制或者传输数据时,避免...

    go语言按显示长度截取字符串的方法

    这里我们探讨的主题是如何按显示长度来截取字符串,这在处理多语言文本时尤其重要,因为不同字符集(如UTF-8)中的字符长度可能不一致。在UTF-8编码下,一个英文字符通常占用1个字节,而一个汉字则可能占用1到3个...

    字符串截取

    - 对于中文字符的处理,应特别注意边界情况的处理,避免出现半个汉字的情况。 - 使用 jQuery 操作 DOM 元素时,需要确保 jQuery 已经正确加载。 综上所述,字符串截取是一个在日常开发中非常实用的功能,尤其在处理...

    高效中英文字符串截取方法

    ### 高效中英文字符串截取方法 #### 知识点概述 本文将详细介绍一种用于高效截取中英文混合字符串的方法。该方法适用于处理大量数据(例如10万条记录),能够在极短的时间内(例如1秒)完成所需的操作。这种方法...

    截取如下字符串“java程序教程”的前5个字节,字符串应该为“java程”,截取前6个字符,字符串也应该为“java程”,程序实现之.

    为了实现这一需求,Java提供了String类的getBytes()方法,用于将字符串转换成字节数组,同样也提供了substring()方法用于截取字符串。但在本例中,使用substring()方法无法直接达到目标,因为这种方法无法直接对字节...

    java 截取字符串(判断汉字)

    ### Java截取字符串(判断汉字) #### 背景与目的 在开发Web应用程序时,尤其是在使用Java Server Pages (JSP) 进行开发时,经常需要处理包含中文字符的字符串。由于中文字符通常占用两个字节,而英文字符只占用一...

    截取用,分割的字符串中的第n个字符串 SQL

    - **处理边界情况**:如果找不到更多的分隔符,则默认将`@location`设置为字符串的长度加1,以便正确截取出最后一个子字符串。 - **返回子字符串**:利用`SUBSTRING`函数根据`@start`和`@location`的值截取第n个子...

    Pb字符串中的中文和英文(含符号)拆分

    例如,给定的标题 "Pb字符串中的中文和英文(含符号)拆分" 描述了一个需求:将像 '中字A文C' 这样的字符串拆分为 '中字文' 和 'AC'。为了实现这一功能,我们可以创建一个自定义函数,例如 `uf_split_str_enorcn()`。 ...

    java 一个截取字符串的函数

    本题中,我们需要编写一个函数,该函数能够根据指定的字节数截取字符串,并确保不会出现汉字被截半的情况。这是一个涉及字符编码和边界条件处理的问题。 首先,我们来理解题目中的要求: 1. 函数接收两个参数,一个...

    前后台实现精确截取指定长度字符串(考虑全角半角)

    - 判断字符串长度是否超过目标长度。如果未超过,则直接返回原字符串。 - 如果超过了目标长度,则进一步计算实际字符宽度,并据此确定截取的位置。 - 在循环中,逐个字符判断其是全角还是半角字符,并相应累加宽度值...

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

    Java面试题中提到的问题是,当截取字符串时,要保证汉字不被分割。这是因为substring方法在处理多字节字符(如汉字)时,可能会在字符中间截断,导致乱码。为了解决这个问题,我们需要编写一个定制的截取函数,这个...

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

    需要注意的是,在截取字符串时,我们必须考虑到编码方式对汉字占用字节长度的影响。这是因为,如果错误地估计了字节长度,就有可能导致汉字被截断,从而引发错误。例如,在某些编码方式下,一个汉字可能由三个字节...

Global site tag (gtag.js) - Google Analytics