编写一个方法 求一个字符串的字节长度

lxw_happy 2009-04-21 06:21:54
编写一个方法 求一个字符串的字节长度
<script language="javascript" type="text/javascript">
new function(s)
{
if(!arguments.length||!s) return null;
if(""==s) return 0;
var l=0;
for(var i=0;i<s.length;i++)
{
if(s.charCodeAt(i)>255) l+=2;
else l++;
}
alert(l);
}("你");
</script>
这段代码有几个地方不是很懂,一个是arguments 是什么意思。还有!s代表什么?

还有charCodeAt()的意思是不是什么意思。请教大家。
...全文
1136 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
行间 2009-04-23
  • 打赏
  • 举报
回复
学习了
dh20156 2009-04-23
  • 打赏
  • 举报
回复
之前写过一个取指定长度字符的,中文字符算两个,可以参考一下相关的计算方法:


<script type="text/javascript">

var getStr = function(str,n){
var tmpStr = str.substr(0,n);
var tmpCode = tmpStr.replace(/[^\x00-\xff]/g,'\r\n').split('');
n = (tmpCode[n-1]=='\r')?n-2:n-1;
var l = tmpCode.slice(0,n).join('').replace(/\r\n/g,'*').length+1;
return tmpStr.substr(0,l);
};

alert(getStr('我ABC汉DE字',6));

</script>


演示请参见JSLib中[取字符中文算两个]部分
dudp1985 2009-04-23
  • 打赏
  • 举报
回复
function getL(input)
{
var out = input.replace(/[^\x00-\xff]/g,'**');
return out.length;
}
wdbjsh 2009-04-23
  • 打赏
  • 举报
回复
顶9楼
  • 打赏
  • 举报
回复
路过
zhong19860904 2009-04-22
  • 打赏
  • 举报
回复
<script language="javascript" type="text/javascript">
new function(s) { // s指最后括号中的参数"你好abc"

//arguments指最下面括号中的参数集, .length指此集合的参数个数
//如果最下面括号中是("你好abc","真诚得分"),那么arguments={"你好abc","真诚得分"}, .length=2
//!s 如楼上所解,表示参数是否非空
if(!arguments.length||!s)
return null;
if(""==s)
return 0;
var l=0;
for(var i=0;i <s.length;i++){
//中文的值都是大于255的,所以“你好”为4个字节,可以测试:alert(s.charCodeAt(i));
if(s.charCodeAt(i)>255)
l+=2;
else
l++;
}
alert(l);
}("你好abc");
</script>
aokihu 2009-04-21
  • 打赏
  • 举报
回复
我记得字符串对象有length属性的吧
gahaya 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liaoliaoss 的回复:]
arguments 参数的集合
arguments[0]代表第一个参数
arguments.length代表参数的个数
!s s是参数 if(!s)是说参数不存在,执行return null;
charCodeAt() 返回的是Unicode 编码
如:
<script type="text/javascript">
var str="a"
alert(str.charCodeAt(0))
</script>
返回97
if(s.charCodeAt(i)>255) l+=2;
估计Unicode 编码中大于255的算2个字节吧 汉字之类的
[/Quote]
详细 正解if(s.charCodeAt(i)>255) l+=2; 检验中文
swprogrammer 2009-04-21
  • 打赏
  • 举报
回复
学习
xieranmaya 2009-04-21
  • 打赏
  • 举报
回复
js用的是unicode
汉字跟英文字母按理说应该是一样长的
liaoliaoss 2009-04-21
  • 打赏
  • 举报
回复
arguments 参数的集合
arguments[0]代表第一个参数
arguments.length代表参数的个数
!s s是参数 if(!s)是说参数不存在,执行return null;
charCodeAt() 返回的是Unicode 编码
如:
<script type="text/javascript">
var str="a"
alert(str.charCodeAt(0))
</script>
返回97
if(s.charCodeAt(i)>255) l+=2;
估计Unicode 编码中大于255的算2个字节吧 汉字之类的
monexus 2009-04-21
  • 打赏
  • 举报
回复
arguments 表示传入的参数集,!s表示s有值不为空

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧