以下代码是将字体标记添加到每个字符,但它不起作用
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 :(得分: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>