2013-01-04 16 views
0

下面的代码是字体标记添加到每个字符,但它不工作传统的ASP循环功能

Function AddFontTag (counter) 
    Do While Len (counter) < 7 
     newStr = newStr & "<font>" & Left (counter, i) & "</font>" 
     i = i + 1 
    Loop 
    AddFontTag = newStr 
End Function 

,因为我不擅长传统的ASP,如变量的作用域,语法。有谁知道上面的代码有什么问题吗?

感谢

+0

什么是你想用这个功能呢?如果使用输出示例更新您的问题(您希望函数输出的内容),则可以给出更好的答案。 – xxbbcc

回答

2

do..while循环是一个无限循环 - 假设counter是一个字符串变量,它的长度不会改变,所以如果Len(counter)小于7在进入功能,它会永远留低于7所以你函数永远不会退出。

你的newStr变量是未定义的 - 这在VBScript中有效,但这是非常糟糕的做法,它是无数错误的来源。它是一个全局变量还是应该是本地的? (它看起来像一个地方。)

+0

谢谢,我已经解决了:功能AddFontTag(计数器) \t对于i = 1至7 \t \t =中newstr&中newstr “” &中期(计数器i 1)& “” \t接着 \t AddFontTag = newStr End Function – hkguile

+0

@hkinterview我很高兴你能解决它。 :) – xxbbcc

1

我不知道你的7个字符的限制如何适用,但对于一般的方法下面会做你所需要的任何长度的字符串:

function AddFontTag(byval str) 
    AddFontTag = Empty 
    do while len(str) <> 0 
     ' get next character 
     dim c: c = left(str, 1) 
     ' reduce original string 
     str = right(str, len(str) - 1) 
     ' build up output string 
     AddFontTag = AddFontTag & "<font>" & c & "</font>" 
    loop 
end function 

的例如

dim test: test = AddFontTag("a test") 
Response.Write test 

会给你

< FONT>一个</FONT> < FONT> </FONT> < FONT>牛逼</FONT> <字体>电子</FONT> <字体>取值</FONT> < FONT>牛逼</FONT>

如果你只是想应用此长度小于7的字符串,您可以添加

if len(str) > 6 then 
    exit function 
end if 
while循环前

str = left(str, 6) 

如果您只是想将其应用于任何长度字符串的前6个字符

0

您的代码正在循环而没有退出循环的条件。 试试这个...希望它有帮助。

Function AddFontTag (counter) 
dim i,newStr,max 
max=7 
    Do While Len (counter) < max 
     newStr = newStr & "<font>" & Left (counter, i) & "-" & "</font>" 
     i = i + 1 
     if i = max-1 then exit Do 
    Loop 
    AddFontTag = newStr 
End Function 
'to check the results 
response.write AddFontTag ("params") 

你会得到 <font>-</font><font>p-</font><font>pa-</font><font>par-</font><font>para-</font><font>param-</font>