我爱电脑技术论坛's Archiver

麦迪 发表于 2008-4-3 00:45

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

数据库中提取长长的文章,总是有碍网页的排版布局。 2RF)GD4T)e
所以,想固定地提取一部分字符,然后后面有……替代。
5p!m7_#J{2M3G9X"OFn
3Udr'@/] 1、原理:
/_T'z)BT
EnJ-M0sw Ze7Q 判断文章的长度是否超过规定的长度,若超过则只显示规定长度的大学,否则完整显示。
3?"k Zu}"m 1C{h`!i(l#d-R
2、涉及函数:
N8j&ywn$CQ],o
Bnq @5p(k7|F+`%t len():返回字符串长度或者变量的字节长度。 3M\)T.o$_ x"W {#R J)P
;G)XI*d4L;c#e
以下为引用的内容:
N9I,z+PgY_5Tp:] T5t!|i <script language="vbs"> J8MCl:in
cnbruce="my name is cnbruce"
G/WX8] q)[u7X U5lai len_cn=len(cnbruce)
L0gW%D&c5y m.d B alert(len_cn)
(q(t F9iJs%c </script> l%yp&Uf{
c6kxI@S
x4h4jQp%F:A,j I
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行] H-J5B,f(Q `0q"|H

3_.f\4aji [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
Z7m5HF{*I
#q[k+UxBN left():截取一个字符串的前部分 !yo}g r$h
以下为引用的内容:
*}(@N`@5[e&z <script language="vbs">Qi |j!@(Y
cnbruce="my name is cnbruce"
DlZtT)C(qk @O*X left_cn=left(cnbruce,10)(^;|$VF2F.WuE M
alert(left_cn)\'Qg.ORdK r
</script>
"U VtuB ?e*mFb5~7O L6V/B`"R

D3C mC G'r [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
G;gF,e2Wr5Npq;T
b+h)Dx z 3、主要程序:判断内容长度是否大于给定值,据结果做相应操作Y Wl(X$Vv|
CU3`8^8]Z#O(So
以下为引用的内容:K'CD\-QrG
<script language="vbs">
6G2|:I/c.Ti text="123 4567 8fds90 abcde fghxcfv" hJW*J(o L
i=108rKO+nN-Ej'y({#m&L|
if len(text)>i then   '如果文本长度大于给定的值#} ` vg$OB0B
  text=left(text,i)     '则提取前段的i位的字符串
OX8Oxs:{4G:L? alert (text&"...")8N!i[+yJab
elselX,V*xKN4B SPJ
alert (text)r'n^l/d kO#H5f
end if
rV @c7_\(w*@@'k q!I.ZS </script> 1]"qL p6]
}0wO'G0g\

I%^"F7c,F `R [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
zs6o8L Nr2p5Oo
;m9fDko"v 4、ASP中应用 7?D(TWafDZ0a

yw&Z_m%sZ|.X+R] 以上是在客户端脚本调试,和ASP也是大同小异:最主要的是函数功能。
)u u/F.a6RkeJj3g 以下为引用的内容:)`w iO%`/u(o
<%i0d!YB RA\[#xK
text=rs("content")  '将数据库字段值赋到某变量上
8X2v9T+v^`A z(Y i=10                      '定义固定大小A z%]:o4U5G{G+ZQ
if len(text)>i then   '如果文本长度大于给定的值gl5E0H8T J#a}
text=left(text,i)     '则提取前段的i位的字符串*r+U*iGW"YC
response.write (text&"...")0KXy:H,]R,D$L
else1\2S@u9|
response.write (text)/k-]MZ@2X'\
end ifW!}(a3C/qb @
%>
d:g3hM;z j [
9x7WkFn;Eh
7Yro8t,gck~ 5、为了方便,做成函数
8Az!U#wiSk4NP(T 以下为引用的内容:xOfUm ]1QjS y
<% l2qqC3H2oJ*pB
function conleft(content,i)
1fr$Q$_(Q if len(content)>i then  
&ZU%O"h.`,{ content=left(content,i)   
H/b(_&Bv I y-U;H response.write (content&"...")1C;q+MtQu7S1\nb
else
Zn-Twt8iW1m response.write (content)D2I3KHgxQ
end if"s3N%i I"C7X
end function
Q m,yai@ z`z %> 4]g(XwS

$o.Wo Xg Nmu+`+Sk )Kc/]qD0rr
以上为函数,下面就可以直接调用。
(LiB-a$l'D!]Z l$a+A7V"Jwu|!n
<%call conleft(rs("content"),10)%>
]!?(sS-c\ x M 8[.c2i0i PJ `x2S
OK,相信以后遇到这些问题应该是NO PROBLEM lL#U0lc!]c
{|"Ss&vJ
为了解决中英文截取的问题,建议大家使用如下函数:
z J9r[vK jQ$N{&]FM a
以下为引用的内容:fb8Z Ha%TK
Function gotTopic(str,strlen)
v+LqpUn:jeHr     if str="" then:l#h!Y\ X
        gotTopic=""+rP4iT5L0s7J
        exit function
&EmVotb     end if
o7H!|0m1]$@     dim l,t,c, i
-?P"F8J d,Z9pT     str=replace(replace(replace(replace(str," "," "),""",chr(34)),">",">"),"<","<");kXo[od ~
    l=len(str)sC(^N}
    t=0
[yNi8?RZ8k     for i=1 to l;o3U"~3L-aE
        c=Abs(Asc(Mid(str,i,1)))
/G3WiU0hH\L i7Gl:G3i!m} lP)@Yt

.`,A D{ P:^2Dw         if c>255 then
qer%ZM?5G             t=t+2
hZe2{S h0m         else
2E&IM.r | e             t=t+1
B$fi*p2Cy)o W         end if
Q*?7_+@5l+D#G9D         if t>=strlen then
Tn-t)Ip#g:P'}             gotTopic=left(str,i) & "…"^QD`0O[*q FI
            exit for
/M6t \ @+~zu         else
#l6Se FDv(z#@             gotTopic=str
P*|)u+r)O6NGT         end if:C\@d"[n
    next\:i'z4T4ksQh~*J
    gotTopic=replace(replace(replace(replace(gotTopic," "," "),chr(34),"""),">",">"),"<","<") End Function

页: [1]

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