<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()的意思是不是什么意思。请教大家。
12 个解决方案
#1
arguments 表示传入的参数集,!s表示s有值不为空
#2
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个字节吧 汉字之类的
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个字节吧 汉字之类的
#3
js用的是unicode
汉字跟英文字母按理说应该是一样长的
汉字跟英文字母按理说应该是一样长的
#4
学习
#5
详细 正解if(s.charCodeAt(i)>255) l+=2; 检验中文
#6
我记得字符串对象有length属性的吧
#7
<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>
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>
#8
路过
#9
function getL(input)
{
var out = input.replace(/[^\x00-\xff]/g,'**');
return out.length;
}
{
var out = input.replace(/[^\x00-\xff]/g,'**');
return out.length;
}
#10
之前写过一个取指定长度字符的,中文字符算两个,可以参考一下相关的计算方法:
演示请参见 JSLib中[取字符中文算两个]部分!
<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中[取字符中文算两个]部分!
#11
学习了
#12
顶9楼
#1
arguments 表示传入的参数集,!s表示s有值不为空
#2
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个字节吧 汉字之类的
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个字节吧 汉字之类的
#3
js用的是unicode
汉字跟英文字母按理说应该是一样长的
汉字跟英文字母按理说应该是一样长的
#4
学习
#5
详细 正解if(s.charCodeAt(i)>255) l+=2; 检验中文
#6
我记得字符串对象有length属性的吧
#7
<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>
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>
#8
路过
#9
function getL(input)
{
var out = input.replace(/[^\x00-\xff]/g,'**');
return out.length;
}
{
var out = input.replace(/[^\x00-\xff]/g,'**');
return out.length;
}
#10
之前写过一个取指定长度字符的,中文字符算两个,可以参考一下相关的计算方法:
演示请参见 JSLib中[取字符中文算两个]部分!
<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中[取字符中文算两个]部分!
#11
学习了
#12
顶9楼