这篇文章主要为大家展示了“java如何编写一个截取字符串的函数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java如何编写一个截取字符串的函数”这篇文章吧。
java:
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));
}
}
js
function isChinese(str){ //判断是不是中文
var reCh=/[u00-uff]/;
return !reCh.test(str);
}
function lenStat(target){
var strlen=0; //初始定义长度为0
var txtval = $.trim(target.val());
for(var i=0;i<txtval.length;i++){
if(isChinese(txtval.charAt(i))==true){
strlen=strlen+2;//中文为2个字符
}else{
strlen=strlen+1;//英文一个字符
}
}
strlen=Math.ceil(strlen/2);//中英文相加除2取整数
return strlen;
}
以上是“java如何编写一个截取字符串的函数”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://www.xuebuyuan.com/3262769.html