0

下面的代码是给每个字符加上字体标签,但是不起作用

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

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

谢谢

4

3 回答 3

2

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

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

于 2013-01-04T04:45:59.467 回答
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>a</font><font> </font><font>t</font><font>e</font><font>s</font><font>t</font>

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

if len(str) > 6 then
    exit function
end if

在while循环之前或

str = left(str, 6)

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

于 2013-01-04T09:17:27.237 回答
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>

于 2013-01-04T18:17:26.060 回答