急!js截取含有中英文的字符串 截取含有中英文的字符串,按字节进行截取,一个英文算一个字节,一个汉字算两个字节,当出现汉字时不能截取半个汉字要把汉字补全。求代码。例如:截取四个字符 abcdefg 结果就是:abcd 爱爱啊啊 结果就是:爱爱 a啊啊你你 结果就是:a啊啊求代码,求高手啊啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <html><body><script>function cutstr(str,len) { var str_length = 0; var str_len = 0; str_cut = new String(); str_len = str.length; for(var i = 0;i<str_len;i++) { a = str.charAt(i); str_length++; if(escape(a).length > 4) { //中文字符的长度经编码之后大于4 str_length++; } str_cut = str_cut.concat(a); if(str_length>=len) { str_cut = str_cut.concat("..."); return str_cut; } } //如果给定字符串小于指定长度,则返回源字符串;if(str_length<len){ return str; } } alert(cutstr("wabdts中国人一人都没有",10)); </script></body></html> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title><script type="text/javascript"> String.prototype.substringbybite=function(n){ var a=""; var num=0; var x='爱'; var reg=/[\u4e00-\u9fa5]/; for(var i=0;i<this.length;i++){ var b=this.charAt(i); if(!reg.test(b)){ num+=1; if(num<=n){ a+=b; } }else if(reg.test(b)){ num+=2; if(num<=n+1){ a+=b; } } } return a; } var x=["abcdefg","爱爱啊啊","a啊啊你你"]; for(var i in x){ document.write(x[i].substringbybite(4)+"<br/>"); }</script></head><body></body></html>这样试试 String.prototype.subByte = function (start, bytes){ for (var i=start; bytes>0; i++) { var code = this.charCodeAt(i); bytes -= code<256 ? 1 : 2; } return this.slice(start,i)}alert('abcdefg'.subByte(0,4))alert('爱爱啊啊'.subByte(0,4))alert('a爱爱啊啊'.subByte(0,4)) 如何在服务器端压缩javascript和css文件 Extjs treePanel 问题求解 怎样做显示货币的页面??? 求一简单js代码(30分钟后结贴) 一个链接如何同时提交URL和一个表单? hidden的值改变时触发事件 为什么使用showModalDialog打开页面,为什么总是会打开以前的文件,也就是历史里面的文件? fso对象的问题。 怎样在java与mysql之间存取解决中文问题? 谢谢 100分求这样一种效果的JS控件。 一段看似简单的js代码的运行结果,很奇怪,哪位大师能给解释下?。。 jquery 如何设置鼠标在div区域内时显示div,离开div隐藏div
<body>
<script>
function cutstr(str,len)
{
var str_length = 0;
var str_len = 0;
str_cut = new String();
str_len = str.length;
for(var i = 0;i<str_len;i++)
{
a = str.charAt(i);
str_length++;
if(escape(a).length > 4)
{
//中文字符的长度经编码之后大于4
str_length++;
}
str_cut = str_cut.concat(a);
if(str_length>=len)
{
str_cut = str_cut.concat("...");
return str_cut;
}
}
//如果给定字符串小于指定长度,则返回源字符串;
if(str_length<len){
return str;
}
}
alert(cutstr("wabdts中国人一人都没有",10));
</script>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
String.prototype.substringbybite=function(n){
var a="";
var num=0;
var x='爱';
var reg=/[\u4e00-\u9fa5]/;
for(var i=0;i<this.length;i++){
var b=this.charAt(i);
if(!reg.test(b)){
num+=1;
if(num<=n){
a+=b;
}
}else if(reg.test(b)){
num+=2;
if(num<=n+1){
a+=b;
}
}
}
return a;
}
var x=["abcdefg","爱爱啊啊","a啊啊你你"];
for(var i in x){
document.write(x[i].substringbybite(4)+"<br/>");
}
</script>
</head><body>
</body>
</html>这样试试
{
for (var i=start; bytes>0; i++)
{
var code = this.charCodeAt(i);
bytes -= code<256 ? 1 : 2;
}
return this.slice(start,i)
}alert('abcdefg'.subByte(0,4))
alert('爱爱啊啊'.subByte(0,4))
alert('a爱爱啊啊'.subByte(0,4))