经典的asp循环函数

时间:2013-01-04 03:11:52

标签: asp-classic vbscript

以下代码是将字体标记添加到每个字符,但它不起作用

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

因为我不熟悉经典的asp,比如变量范围,语法。有谁知道上面代码的问题是什么?

感谢

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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

会给你

  

&LT;字体&gt;一种与LT; /字体&GT;&LT;字体&GT; &LT; /字体&GT;&LT;字体&GT; T&LT; /字体&GT;&LT;字体&GT; e控制/字体&GT;&LT;字体&GT; S&LT; /字体&GT;&LT;字体&GT; T&LT; /字体&GT;

如果您只想将其应用于长度小于7的字符串,则可以添加

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

str = left(str, 6)

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

答案 2 :(得分: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>