0

次のコードは、すべての文字に font タグを追加するものですが、機能しません。

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 に答える