2013-01-04 43 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>