我爱电脑技术论坛's Archiver

黑侠 发表于 2008-4-1 10:39

ASP实现将长的标题用省略号收尾

数据库中提取长长的文章,总是有碍网页的排版布局。 &yO mr!q-x`
所以,想固定地提取一部分字符,然后后面有……替代。 o^M*YM

)G)LlV0go1v2y 1、原理:
9L)j d#JD '~7hwz&S
判断文章的长度是否超过规定的长度,若超过则只显示规定长度的大学,否则完整显示。
Q3@*\.zfAMB _@u{)Rb6z
2、涉及函数: 1Af [T6C3z

YS0f_7Zt8f4Y%P len():返回字符串长度或者变量的字节长度。
'~r:{a/M*[B TQ+t P3H2L\8TY#B\
以下为引用的内容:
M"^p|9^K <script language="vbs">N"Q7y^(BP#d2[ew
cnbruce="my name is cnbruce"6b#x,f2{Bw
len_cn=len(cnbruce)
Rz-HO!T0}J alert(len_cn)
,K0U"J5Ksii u r </script>
D ^b@3T q!\Y"@
OW4EPA ^ _%F!m2P f.a
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
"[7{ l^ Vm#xJ MB$d%z"{I u.d T,I
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
/qO'^+jF^2{ ]
:j)r.I9xb:Hx*n]3T left():截取一个字符串的前部分 'r4^|:U{5z?L
以下为引用的内容:
WJ'A)h%uW'r <script language="vbs">
-JLM`(a3@%].f{ D cnbruce="my name is cnbruce"(I8Nv{+D$?:Y
left_cn=left(cnbruce,10)
%x3Ncuz*i alert(left_cn)`~g@c3t
</script>
%y3MX D6uj-X+t?
E_qR er5M -A%c5V Tfm7l%@&g
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行] rc VN"m/t*_ko
8^w,mp aP2G(G4I
3、主要程序:判断内容长度是否大于给定值,据结果做相应操作
i:_#h-p#L~K
2] HJy,cFw 以下为引用的内容:faat$pE
<script language="vbs">
b?p9~/[ text="123 4567 8fds90 abcde fghxcfv"X5W]#FH;_.Kt
i=10
b y ~1@(s8jH if len(text)>i then   '如果文本长度大于给定的值
f?;fI [p-Dg4A%_   text=left(text,i)     '则提取前段的i位的字符串 K&M6U;`F5v/F G6p|
alert (text&"...")'Y%r {dQ9W
else
rO4\d)] alert (text){R@\K(})|,P
end if1E!q*^5@u0V ~
</script>
A R`_t4s%R9D
TW"`]~(@(UY4r
^.O!~$wS(R%W#df [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行] -JD%uKu%N fM
#L;d(}I"p Aj&i
4、ASP中应用
,r![5Md C6PY "e2M9C1s ` p*v\
以上是在客户端脚本调试,和ASP也是大同小异:最主要的是函数功能。 1]$nAOr5I
以下为引用的内容:
6vr;G3K.fn*Bv5F Z <%
4g Pw0~%e p+PN text=rs("content")  '将数据库字段值赋到某变量上
5]m5hA4ZHB"m,? i=10                      '定义固定大小})d"Wv4xqX8R$Hb,M
if len(text)>i then   '如果文本长度大于给定的值FU h6pgE[8{'[ Z
text=left(text,i)     '则提取前段的i位的字符串
X8B-T ea5Ug l0i;E1[j[ response.write (text&"...")o~(bp5J;H h g(X
else
X c&K(r g-rO] response.write (text)
R[b3ui end if
pb*C+|@ l %>
:f]7EA*fx{v
I"qt7w&K(N
}uvVW)X;P'd1M9v 5、为了方便,做成函数
zs Rs3Bm 以下为引用的内容:
0R5ce"{dve#^ <%dK)c#FY EJt
function conleft(content,i)
7L,y0\(l4o[SO_7v if len(content)>i then  
[E%PY.@|M-_._ A content=left(content,i)    TA-j)X A M8O
response.write (content&"...")Z,krF?Aa
else
k+H h7RNA)uW g response.write (content)
_c"dld/pV end if
p#v6Z,io end functionJ ~^+M`$t dw.c
%>
,i*e wO#H#JU.] bu.S n%g*OC@`6o x&}
lc?x6SK9PwB'I
以上为函数,下面就可以直接调用。 B/pG0N-H*N'U$@l)TH
6e(^1f1J$~.Y|,p@
<%call conleft(rs("content"),10)%> ?xk3Ly+O8^
F(`cr3L*k.[S6] V#MH
OK,相信以后遇到这些问题应该是NO PROBLEM 'x!\!D L'@3Ne;U4O

-_OW!O^v]*{9|2}| 为了解决中英文截取的问题,建议大家使用如下函数:
a a!d)_]Cjw f a X
#b(fN_Q)`C,L 以下为引用的内容:
s&`2m]'i!?b%~ eTb]d Function gotTopic(str,strlen)
u6s"A_AU     if str="" then
j| vh?,i         gotTopic="" N4G.hMaE2`F
        exit function1q cr(\r`L~
    end if3J,X2b xC Rh
    dim l,t,c, i k@Jm/a
    str=replace(replace(replace(replace(str," "," "),""",chr(34)),">",">"),"<","<")
\ a lFu5]c6[DE     l=len(str)
x"_ o;m,uLGC5w     t=0
9H.}(dx`$tSO     for i=1 to l
+z.mM%F^%K8is         c=Abs(Asc(Mid(str,i,1))) ?K2fXvh1b
%a+LLt,IK
oYE D$L R A
        if c>255 then Pi N(u:J} @n
            t=t+2
vSI3E{-J         elseP4ta/WW?:QW
            t=t+1
{!D(d@Y+r         end ifNoI)d(f| y'|
        if t>=strlen then|#L D%ga7l p
            gotTopic=left(str,i) & "…"
@6y,f jf/Wr2m             exit for
~o]N}#_X5\7Qy         elsei#u3C z5U+F`M~ [@ c
            gotTopic=str B5vDLUW&d
        end if
$G&Nsk T S? `     next` Ts{'L,|$B
    gotTopic=replace(replace(replace(replace(gotTopic," "," "),chr(34),"""),">",">"),"<","<") End Function Chinaz

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.