<%
function gotTopic(str,strlen)
dim l,t,c, i
l=len(trim(str))
t=0
for i=1 to l
c=Abs(Asc(Mid(str,i,1)))
if c>255 then '如果是汉字为2个字节
t=t+2
else
t=t+1
end if
if t>=strlen then
gotTopic=left(str,i)&".."
exit for
' else
' gotTopic=str
end if
next
end function
%>
<%=gotTopic("12中5文634", 5)%>
==========================
求i, 如果i所处的字符>strLen则取ok
==================================
function decodeHTML(fString)
if not isnull(fString) then
fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")
fString = Replace(fString, " ", CHR(32))
fString = Replace(fString, " ", CHR(9))
fString = Replace(fString, """, CHR(34))
fString = Replace(fString, CHR(39),"'")
fString = Replace(fString, "</P><P> ",CHR(10) & CHR(10))
fString = Replace(fString, "<BR> ", CHR(10))
decodeHTML = fString
end if
end function
function cut_title(content, content_len)
content=decodeHTML(content)
if strlen(content)>content_len*2 then
resultStr=""
i=1
temp=0
do while i<=content_len
if Asc(mid(content,i,1)&"中")<0 then
resultStr = resultStr + mid(content,i,1)'中文
'temp=2
else
resultStr = resultStr + mid(content,i,1)'en文
content_len =content_len+0.5
temp=temp+1
if temp=2 then
temp=0
end if
end if
end if
i=i+1
loop
if temp = 1 then '借助辅助变量才做。也可求content_len是否有0.5, 这也是求对最后一个字符进行处理的好办法
if Asc(mid(content,i,1)&"中")<0 then
else
resultStr = resultStr + mid(content,i,1)
end if
end if
cut_title= resultStr
else
cut_title = content
end if
end function
function strlen(str)
dim p_len
p_len=0
strlen=0
if trim(str)<>"" then
p_len=len(trim(str))
for xx=1 to p_len
if asc(mid(str,xx,1))<0 then
strlen=int(strlen) + 2
else
strlen=int(strlen) + 1
end if
next
end if
end function
我自已写的,严格控制,字符为中文的长度,只能小于,不能大于.
=======================================
private static string GetLenStr(String ss,int maxLength)
{
if(ss.Length > maxLength)
{
string retstr = "";
Char[] cc=ss.ToCharArray();
int intLen=ss.Length;
int i;
if("豆腐".Length==4)
{
//是非 中文 的 平台
return ss.Substring(0, maxLength);
}
int temp = 0;
for(i=0;i<maxLength;i++)
{
retstr += cc[i];
if(!IsTwoBytesChar(cc[i]))
{
temp += 1;
if(temp == 2)
{
temp = 0;
}
else
{
maxLength ++;
}
}
}
if(temp == 1)
{
retstr = retstr.Substring(0, retstr.Length-1);
}
return retstr;
}
else
{
return ss;
}
}
public static bool IsTwoBytesChar(char chr)
{
string str =chr.ToString();
// 使用中文支持编码
Encoding ecode = Encoding.GetEncoding("GB2312");
if (ecode.GetByteCount(str) == 2)
{
return true;
}
else
{
return false;
}
}
===========================
对于编写一个程序,先只需考虑正常情况即可,然后再增加非正常代码。
一次只做一件事,如果考虑太多了,往往都不知从何入手.
1)正常怎样处理就怎样编写。可以先留下一些bug, 做好注释就好
2)多重循环按从内到外。
单循环中的一些处理,包括重叠处理。
temp=0
for ()
temp++;
if(temp=5)
{
tmep=0;
}
}
====================================
function decodeHTML(fString)
if not isnull(fString) then
fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")
fString = Replace(fString, " ", CHR(32))
fString = Replace(fString, " ", CHR(9))
fString = Replace(fString, """, CHR(34))
fString = Replace(fString, CHR(39),"'")
fString = Replace(fString, "</P><P> ",CHR(10) & CHR(10))
fString = Replace(fString, "<BR> ", CHR(10))
decodeHTML = fString
end if
end function
function cut_str(content, content_len)
if len(content)>content_len then
cut_str=decodeHTML(content)
cut_str = Left(content, (content_len-2))&".."
else
cut_str = content
end if
end function
'function cut_title(content, content_len)
' if len(trim(content))>content_len then
' content=decodeHTML(content)
' cut_title = Left(content, content_len)
' else
' cut_title = content
' end if
'end function
'function cut_title(content, content_len)
' content=decodeHTML(content)
' if strlen(content)>content_len*2 then
' resultStr=""
' i=1
' temp=0
' do while i<=content_len
' if Asc(mid(content,i,1)&"中")<0 then
' resultStr = resultStr + mid(content,i,1)'中文
' else
' resultStr = resultStr + mid(content,i,1)'en文
' content_len =content_len+0.5
' temp=temp+1
' if temp=2 then
' temp=0
' end if
' end if
' i=i+1
' loop
' if temp = 1 then
' if Asc(mid(content,i,1)&"中")<0 then
' else
' resultStr = resultStr + mid(content,i,1)
' end if
' end if
' cut_title= resultStr
' else
' cut_title = content
' end if
'end function
function cut_title(str,strlen) '将求长度及截取合并
str=decodeHTML(str)
'strlen=strlen*2 '汉字标准
dim l,t,c, i
l=len(trim(str))
t=0
for i=1 to l
c=Abs(Asc(Mid(str,i,1)))
if c>255 then '如果是汉字为2个字节
t=t+2
else
t=t+1
end if
if t>strlen then
cut_title=left(str,i-1)&"."
exit for
end if
next
if t=strlen then
cut_title=left(str,i)
elseif t<strlen then
cut_title=str
end if
end function
function cut_title_class(str,strlen) '将求长度及截取合并
str=decodeHTML(str)
'strlen=strlen*2 '汉字标准
dim l,t,c, i
l=len(trim(str))
t=0
for i=1 to l
c=Abs(Asc(Mid(str,i,1)))
if c>255 then '如果是汉字为2个字节
t=t+2
else
t=t+1
end if
if t>strlen then
cut_title_class=left(str,i-1)
exit for
end if
next
if t=strlen then
cut_title_class=left(str,i)
elseif t<strlen then
cut_title_class=str
end if
end function
function strlen(str)
dim p_len
p_len=0
strlen=0
if trim(str)<>"" then
p_len=len(trim(str))
for xx=1 to p_len
if asc(mid(str,xx,1))<0 then
strlen=int(strlen) + 2
else
strlen=int(strlen) + 1
end if
next
end if
end function
%>