asp排序问题,看似简单,高手来看看,本人一个到就头晕

diyager 2006-08-24 05:15:36
Dim n
n="a,a,a,b,c,d,d,e,e,e,f,f,g,g"


用asp如何将n里的一串字符按以下排序:

a b c d e f g
a d e f g
a e
...全文
703 37 打赏 收藏 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级大笨狼 2006-08-25
  • 打赏
  • 举报
回复
白痴,这个根本不需要排序,只要找出多少个a,多少个b放到表格里就行了。
xuanstar 2006-08-24
  • 打赏
  • 举报
回复
将字符串传人sql,再拆分,从出现最多次数的开始循环,就可以了。在存储过程解决这个问题,比较方便。
xuanstar 2006-08-24
  • 打赏
  • 举报
回复
先拆分,再分析结果:第三组数据只出现三次,第二组数据都出现了两次,第一组就是 distinct 所有的数据了。
文盲老顾 2006-08-24
  • 打赏
  • 举报
回复
^v^,我也没搞明白

谢谢加分 ^v^
dong127 2006-08-24
  • 打赏
  • 举报
回复
解决了?我怎么测试出来不对的?

输出:
原字符串:a,a,a,a,a,a,a,a,a,a,a,b,c,d,e,r,f,d,e,g,g,g,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f
转换后字符串:
            
 a b c d e r f d e g f
 a         g f
 a         g f
 a          f
 a          f
 a          f
 a          f
 a          f
 a          f
 a          f
 a          f
           f
           f
           f
           f
           f
diyager 2006-08-24
  • 打赏
  • 举报
回复
已经解决。谢谢!
diyager 2006-08-24
  • 打赏
  • 举报
回复
<%
Dim n
dim s,t,d
n="a,a,a,b,c,d,e,r,f,d,e,g,g,g,f,a,a"
arrn=split(n,",")
arrnlen=Ubound(arrn)

dim charnew,charold,j,k
redim arrNew(arrnlen,arrnlen)
j=0
k=0
charnew=""
charold=""

for i=0 to ubound(arrn)
charnew=arrn(i)
if charnew=charold then
j=j+1
if j>maxJ then maxJ=j
else
j=1
k=k+1
end if
arrNew(j,k)=charnew
charold=charnew
next
maxK=k

response.write "原字符串:"&n&"<br>"
response.write "转换后字符串:<br>"
for j=0 to maxJ
for k=0 to maxK
if len(arrNew(j,k))>0 then
response.write arrNew(j,k)&" "
else
response.write " "
end if
next
response.write "<br>"
next
%>
三仙半 2006-08-24
  • 打赏
  • 举报
回复
这个帖可以写个标题叫“智力测验”了,好帖,坚决建议斑竹给加分!
dong127 2006-08-24
  • 打赏
  • 举报
回复
回家后再给个我写的
xiaoyaowp 2006-08-24
  • 打赏
  • 举报
回复
按顺序抽字母(从每次剩下的)
循环
taochunsong 2006-08-24
  • 打赏
  • 举报
回复
我智商太低了
没有看懂
到底什么规律阿
net205 2006-08-24
  • 打赏
  • 举报
回复
咋有这样的要求。。。。

看热闹.
dong127 2006-08-24
  • 打赏
  • 举报
回复
写点程序不是正好打消了你的无聊吗
gq 2006-08-24
  • 打赏
  • 举报
回复
纳闷。。真是无聊了我。
gq 2006-08-24
  • 打赏
  • 举报
回复
<%
dim j
dim a1,a2,a3,a4,a5
j=1
function a(b)
m = split (b,",")
for i=0 to Ubound(m)-1
if m(i)= m(i+1) then
if j=6 then
j=1
end if
select case j
case 1
a1=a1+m(i) &","
case 2
a2=a2+m(i)&","
case 3
a3=a3+m(i)&","
case 4
a4=a4+m(i)&","
case 5
a5=a5+m(i)&","
end select
j = j+1
else
select case j
case 1
a1=a1+m(i)&","
case 2
a2=a2+m(i)&","
case 3
a3=a3+m(i)&","
case 4
a4=a4+m(i)&","
case 5
a5=a5+m(i)&","
end select
j=1
end if
next
end function
a("a,a,a,a,a,a,a,a,a,b,b,c,d,d,e,e,e,f,f,g,g,g,")
response.write a1 &"<br>"
response.write a2 &"<br>"
response.write a3 &"<br>"
response.write a4 &"<br>"
response.write a5 &"<br>"

m1 = split (a1,",")
m2 = split (a2,",")
response.write replace(a1,",","") &"<br>"
g=0
for i = 0 to Ubound(m1)-1
g=0
for j = 0 to Ubound(m2)-1
if m1(i)=m2(j) then
g = 1
end if
next
if g=1 then
response.write m1(i)
else
response.write "-"
end if
next
response.write "<br>"

m3 = split (a3,",")
g=0
for i = 0 to Ubound(m1)-1
g=0
for j = 0 to Ubound(m3)-1
if m1(i)=m3(j) then
g = 1
end if
next
if g=1 then
response.write m1(i)
else
response.write "-"
end if
next
response.write "<br>"
m4 = split (a4,",")
g=0
for i = 0 to Ubound(m1)-1
g=0
for j = 0 to Ubound(m4)-1
if m1(i)=m4(j) then
g = 1
end if
next
if g=1 then
response.write m1(i)
else
response.write "-"
end if
next
response.write "<br>"
m5 = split (a5,",")
g=0
for i = 0 to Ubound(m1)-1
g=0
for j = 0 to Ubound(m5)-1
if m1(i)=m5(j) then
g = 1
end if
next
if g=1 then
response.write m1(i)
else
response.write "-"
end if
next

%>
小码 2006-08-24
  • 打赏
  • 举报
回复
<%'更正:
function a(byval b)
aa=""
m = split (b,",")
for i=0 to Ubound(m)-1
if m(i)=m(i+1) then
aa=aa+m(i)&","
else
If i>0 Then
j=asc(m(i))-asc(m(i-1))
If j>1 Then
For k=1 to j-1
response.write "-"
Next
End If
End If
response.write m(i)
end if
next
response.write "<br>"
if aa<>"" then
a(aa)
end if
end function
a("a,a,a,b,c,d,d,e,e,e,f,f,g,g,")
%>
有一点不明白,重复的留作下次再排,怎么会有超过2次甚至达到5次的时候呢?请把最终结果例举出来看看?
文盲老顾 2006-08-24
  • 打赏
  • 举报
回复
没看到规则变了 -_-b
diyager 2006-08-24
  • 打赏
  • 举报
回复
唯一的要求就是
a或者b或者c,只要重复次数超过5次,就另起一列
文盲老顾 2006-08-24
  • 打赏
  • 举报
回复
<%
n="a,a,a,b,c,d,d,e,e,e,f,f,g,g"

tmp=split(n,",")
c=split(n,",")

for i=0 to ubound(tmp)-1
c(i)=""
next

for i = 0 to ubound(tmp)-1
j=0:a=0
do while instr(c(j),tmp(i))>0
j=j+1
if j>=ubound(c) then a=1:exit do
loop
if a=1 then
'redim arr(j)
response.end
end if
c(j)=c(j)&" "&tmp(i)
next

for i=0 to ubound(c)
response.write c(i)&"<br>"
if c(i)&" "=" " then exit for
next
%>
diyager 2006-08-24
  • 打赏
  • 举报
回复
楼上的做法像了。
加载更多回复(16)

28,402

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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