网上流传的答案是错误的:在此更正一下
public class StringSplit {
public static void main(String[] args) throws Exception {
String ss = "a很bc你好";
System.out.println(splitString(ss, 1));
}
public static String splitString(String str, int byteLength)
throws Exception {
//如果字符串为空,直接返回
if(str == null || "".equals(str)) {
return str;
}
//用于统计这个字符串中有几个中文字符
int wordCount = 0;
//统一按照gbk编码来得到他的字节数组,因为不同的编码字节数组是不一样的。
byte[] strBytes = str.getBytes("GBK");
//如果只截取一位,而且第一位是中文字符时的处理
if (byteLength == 1) {
if (strBytes[0] < 0) {
return str.substring(0, 1);
}
}
//字符串中的一个中文会使得wordCount 加两次
//如果你这个字节取出来的是一个汉字也就是两个字节当中的一个的话val的值为负数
for (int i = 0; i < byteLength; i++) {
int val = strBytes[i];
if (val < 0) {
wordCount++;
}
}
//如果传递的这个截取的位数没有截到半个中文上面,那么就按照byteLength - (wordCount / 2个长度进行截取
if (wordCount % 2 == 0) {
return str.substring(0, (byteLength - (wordCount / 2)));
}
//否则,我们就舍弃多出来的这一位 所以 -1
return str.substring(0, (byteLength - (wordCount / 2) - 1));
}
}
分享到:
相关推荐
java编写一个截取字符串的函数,输入为一个字符串和字节数
java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况
编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+...
7. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉...
7、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我...
是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。 start 是一个整数,指定子串的开始位置。 length 是一个整数,指定子串的长度(要返回的字符数或字节数)。 ...
可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码
1、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC 汉 DEF”,6,应该输出为“我ABC”而不是“我...
ORACLE PL/SQL 字符串函数、数学函数、日期函数 --【字符串函数】 --字符串截取substr(字段名,起始点,个数) select Name,substr(Name,2,4),substr(Name,0,3),substr(Name,-2,3),substr(Name,-2,1) from t1; --字符...
这其中最最头疼的就是标题字符的截取的问题,虽然有fn:substring,但表现率以及对中文的支持均不够完善,其实最终还是归结为客户要求太高了,不过做事情就应该严谨嘛,尤其干我们这一行。。在我们老大的指点下,了解...
JavaScript字符串处理函数,根据定义的长度截取字符串,超出部分裁掉追加……,很多时候网页上显示的内容需要缩成“…”该方法用于处理字符串显示固定长度,超长部分用“…”代替: /**参数说明: * 根据长度截取...
根据显示长度截取字符串,之前php用的utf8编码,10个英文和10个汉字的显示长度差距太大,按字节截取的话又会出错出现截取半个汉字的情况,所以写了这两个函数. 这两天在折腾golang,所以就用golang重写了着连个函数.代码...
为了解决这个问题昨天写了根据字节数截取字符串的函数。具体使用很简单,跟String.subString(start, end)一样使用就可。比如:var str = “诶必塞第衣爱抚即”; var str1 = str.subCHStr(2, 2); var str2 = str....
字符串截取函数,只限单字节字符使用(对于中文的截取时遇上奇数长度是会出现乱码,需另行处理),本函数可截取字符串指定范围内的字符。
整数,指定子串的开始位置 注:SQL中”1″表示字符串中的第一个字符,而.NET中”0″表示第一个字符length:整数,指定子串的长度(要返回的字符数或字节数) 2.patindex 返回指定表达式中某模式第一次出现的起始位置...
16. 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半...
16. 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半...
但字符串只要出现中文字符,就有可能导致PHP substr中文乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位数不准确,substr()硬生生地将一个中文字符“锯”成两半,造成断开的字符会...
本文实例讲述了C#按字节数截取字符串并在后面加上省略号…的方法,这是一个自定义的C#函数,函数的使用说明如下: 原始字符串 提取前endIdex个字节 <returns></returns> 函数代码如下: public static string ...