求:计算字符串(包含中英文字符)的长度的函数,javascript,java都可以。

紫罗兰Cherry 2004-01-29 05:06:49
需要对输入的数据进行长度检测,但我使用javascript中的length函数对中文是按1个字符,对英文也是一个字符,我访问的数据库是mysql,其中,英文是一个字节,中文是两个字节,想要保存数据时,检测数据长度的函数。

...全文
1624 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaofenguser 2004-02-03
  • 打赏
  • 举报
回复
http://www.csdn.net/Develop/read_article.asp?id=23675

/**
* 判断一个字符是Ascill字符还是其它字符(如汉,日,韩文字符)
* @param char c, 需要判断的字符
* @return boolean, 返回true,Ascill字符
*/
public static boolean isLetter(char c) {
int k = 0x80;
return c/k == 0?true:false;
}

/**
* 得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为2,英文字符长度为1
* @param String s ,需要得到长度的字符串
* @return int, 得到的字符串长度
*/
public static int length(String s) {
char[] c = s.toCharArray();
int len = 0;
for (int i = 0; i < c.length; i++)
{
len++;
if (!isLetter(c[i]))
{
len++;
}
}
return len;
}

hjwl 2004-02-03
  • 打赏
  • 举报
回复
<script language="JavaScript">
var temp="123我们";
function getLength(stringIn)
{
var strLength=0;
for(var i=0;i<stringIn.length;i++)
{
if(stringIn.charCodeAt(i)>255)
{
strLength+=2;
}
else
{
strLength+=1;
}

}
return strLength;
}

alert(getLength(temp));
</script>
紫罗兰Cherry 2004-02-03
  • 打赏
  • 举报
回复
to hjwl(hj)

上面这个代码在java中可以执行,
但在javascript中,该怎么写啊!

多谢!
hjwl 2004-02-02
  • 打赏
  • 举报
回复
要检测一个String的长度?
String temp="长度abc";
int stringLength=temp.getBytes().length;
不管字符是中文还是英文都可以准确得到长度的
紫罗兰Cherry 2004-02-02
  • 打赏
  • 举报
回复
java中是否直接有函数可以
计算包含中英文字符的字符串的长度。
acefr 2004-01-29
  • 打赏
  • 举报
回复
js的:

//函数名:fucCheckLength
//功能介绍:检查字符串的长度
//参数说明:要检查的字符串
//返回值:长度值
function fucCheckLength(strTemp)
{
var i,sum;
sum=0;
for(i=0;i<strTemp.length;i++)
{
if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255))
sum=sum+1;
else
sum=sum+2;
}
return sum;
}
steveyue 2004-01-29
  • 打赏
  • 举报
回复
用string.length()不行吗?先进行编码转换然后在用。一般显示中文GB2312-80而SQlServer里用ISO8895-1,mysql我不知道是什么字符集,试试吧
zdsxj2002 2004-01-29
  • 打赏
  • 举报
回复
/**
* 计算字符串长度.
* 一个汉字的长度按2计算.
* 如果给定的字符串为null, 返回0.
*
* @param str 待计算长度的字符串
* @return 字符串长度
*/
public static int strlen(String str){
if (str == null || str.length() <= 0){
return 0;
}

int len = 0;

char c;
for (int i=str.length()-1; i>=0; i--){
c = str.charAt(i);
if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')){
//字母, 数字
len++;
}
else{
if (Character.isLetter(c)){ //中文
len+=2;
}else{ //符号或控制字符
len++;
}
}
}

return len;
}
stonecsdn 2004-01-29
  • 打赏
  • 举报
回复
感觉上应该在字符集的编码上下手,根据编码格式进行统计。
DaNiao 2004-01-29
  • 打赏
  • 举报
回复
给mysql设一下编码就好了,比如用UTF-16
这样mysql就可以告诉你有几个字符了
用jdbc也可直接读到String里,然后String.length()

81,092

社区成员

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

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