`

截取字符串 中文按两个字符长度处理情况

阅读更多

public class SubStringTest {
/**
 * 
 * @param src 源字符串
 * @param subLength   需要截取的长度
 * @return
 */
	public static String subString(String src, int subLength) {
		if(src == null){
			return null;
		}
		if(subLength == 0){
			return "";
		}
		StringBuffer sb = new StringBuffer();
		char[] chars = src.toCharArray();
		for (char a : chars) {
			if (isContinueAppend(sb, a, subLength)) {
				sb.append(a);
			}
			else{
				break;
			}
		}
		return sb.toString();
	}
/**
 * 
 * @param sb 已截到的字符串
 * @param a  当前要被装进sb的字符
 * @param subLength  需要截取的长度
 * @return
 */
	public static boolean isContinueAppend(StringBuffer sb, char a,
			int subLength) {
		int currentLength = 0;
		for (char temp : sb.toString().toCharArray()) {
			currentLength += (temp >> 8 == 0) ? 1 : 2;
		}
		return (currentLength + (a >> 8 == 0 ? 1 : 2)) <= subLength;
	}

	public static void main(String[] args) {
		System.out.println(subString("我是一a个中国人",7));
	}
}


分享到:
评论

相关推荐

    截取指定长度的字符串

    自己输入一个字符串,字符串中可以包括字符和汉字,截取指定的字符串

    C#区分中英文按照指定长度截取字符串的方法

    这段C#代码用于按照指定的长度截取字符串,一个中文字符算2个字符,按照这个方法截取的字符串基本可以保持显示长度一致 /// /// 截取文本,区分中英文字符,中文算两个长度,英文算一个长度 /// /// 待截取的字符...

    js截取字符串-三种方法

    js截取字符串 substr() 方法能够根据指定长度来截取子字符串。它包含两个参数,第一个参数 表示准备截取的子字符串起始下标,第二个参数表示截取的长度。 示例 1 在下面示例中使用 lastIndexOf() 获取字符串的最后一...

    greenplum常用命令

    2)字符串长度:length 3)字符串截取:substring('fsfd' from 2 for 3)、substr('fsfd',2,3) 4)字符串两头去字符:trim(' fsf')、trim(both 'x' from 'xfdsx') 5)大小写转换:upper()、lower() 6)替换字符...

    Oracle截取字符串去掉字段末尾指定长度的字符

    主要介绍了Oracle截取字符串去掉字段末尾指定长度的字符 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

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

    根据显示长度截取字符串,之前php用的utf8编码,10个英文和10个汉字的显示长度差距太大,按字节截取的话又会出错出现截取半个汉字的情况,所以写了这两个函数. 这两天在折腾golang,所以就用golang重写了着连个函数.代码...

    c#截取指定长度,中英文混合字符串

    c#截取指定长度 中英文混合字符串 一个中文为两个字符计算,英文一个字符。

    SQL 截取字符串应用代码

    字符串截取函数,只限单字节字符使用(对于中文的截取时遇上奇数长度是会出现乱码,需另行处理),本函数可截取字符串指定范围内的字符。

    PHP中使用substr()截取字符串出现中文乱码问题该怎么办

    但字符串只要出现中文字符,就有可能导致PHP substr中文乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位数不准确,substr()硬生生地将一个中文字符“锯”成两半,造成断开的字符会...

    Labview 搜索拆分字符串

    Labview编写的代码, 搜索拆分字符串

    常常会用到的截取字符串substr()、substring()、slice()方法详解

    定义:接受一个或者两个参数,第一个参数指定子字符串的开始位置。第二个参数表示子字符串的结束位置(不包括结束位置的那个字符),如果没有传递第二个参数,则将字符串的长度作为结束位置。 1、传递参数为正值情况...

    可读的 Fortran 字符串处理模块

    4. 字符串长度和截取:包含了获取字符串长度的函数,以及截取字符串的子串的函数。通过使用字符串模块,Fortran 程序员可以更加方便地处理字符串操作,从而提高代码的可读性和可维护性。在编写需要大量字符串处理的...

    用javascript实现截取字符串包含中文处理的函数

    一直不知道js可以截取中文字符,呵呵,原理用正则表达式,匹配中文的长度,中文算两个,因为算一个,是个好东西,推荐大家收藏

    mysql 截取指定的两个字符串之间的内容

    如 现有字符串 “[]aseabcd[12345]ddxabcdsx[]”,要截取”abcd[” 和 “abcd[“之后的第一个 “]” 之间的内容 “12345”,当然当中的内容长度不是固定的,可以是”123456″ 或者其他字符串。 他问我的时候,我第一...

    ASP.NET两个截取字符串的方法分享

    代码如下:两个截取字符串的实用方法(超过一定长度自动换行)/// /// 截取字符串,不限制字符串长度 /// /// 待截取的字符串 /// 每行的长度,多于这个长度自动换行 /// public string CutStr(string str,int ...

    C#截取指定长度的方法

    例如要截取字符串"我是1个中国人",取3位长度,那得到的结果是"我",如果取6位长度,得到的结果是"我是1",因为汉字是两个字节。 当时的思路主要是考虑最后一位是单字节还是双字节,不过最终得出了比较不错的方法

    深入SQL截取字符串(substring与patindex)的详解

    length ) expression:字符串、二进制字符串、text、image、列或包含列的表达式start:整数,指定子串的开始位置 注:SQL中”1″表示字符串中的第一个字符,而.NET中”0″表示第一个字符length:整数,指定子串的长度...

    字符串帮助类C#实现Demo

    1. 连接字符串(Concatenation):将两个或多个字符串连接在一起,形成一个新的字符串。在大多数编程语言中,可以使用加号 "+" 或特定的字符串连接函数来实现。 2. 截取子字符串(Substring):从一个较长的字符串...

    JS字符串长度判断,超出进行自动截取的实例(支持中文)

    今天一个小弟问我的问题,在文本框中输入字符,如果超出指定长度,就把它截取,要求中文等于两个字符的长度,我找一下资料,把这个功能实现了, 下面是JS代码: &lt;html&gt; [removed][removed] &lt;body&gt; &lt...

    Nginx if语句加正则表达式实现字符串截断

    在给大家讲述这个问题之前,先给大家看一段nginx配置....但如果我们要截取某几位字符怎么办呢? 首先大家想到的肯定是使用模块来实现, 但只能这样吗? 有没有更方便的方式呢? 有的. 我们可以巧妙地使用if

Global site tag (gtag.js) - Google Analytics