VBScript中是否有任何内置函数重复字符串N次?

时间:2016-10-19 12:30:35

标签: string vbscript repeat

VBScript中有一个函数String(number,character)返回一个包含指定长度的重复字符的字符串。 E.g:

String(5, "A")     ' output: "AAAAA"

有没有重复字符串的功能? E.g:

RepeatString(5, "Ab")     ' output "AbAbAbAbAb"

3 个答案:

答案 0 :(得分:14)

不,没有内置。相反:

n      = 5
str    = "Ab"
result = replace(space(n), " ", str)

答案 1 :(得分:2)

一般的简单解决方案

Function RepeatString( number, text )
    Redim buffer(number)
    RepeatString = Join( buffer, text )
End Function

但如果文字很短但重复次数很多,这是一个更快的解决方案

Function RepeatString( ByVal number, ByVal text )
    RepeatString=""
    While (number > 0)
        If number And 1 Then 
            RepeatString = RepeatString & text
        End If 
        number = number \ 2 
        If number > 0 Then
            text = text & text 
        End If 
    Wend
End Function

答案 2 :(得分:1)

为简洁起见,可接受的答案是好的。但是下面的函数实际上快10倍。它的速度是RepeatString()的两倍。它使用Mid鲜为人知的功能,它用 repeating 模式一次性填充字符串缓冲区的其余部分...

Function Repeat$(ByVal n&, s$)
    Dim r&
    r = Len(s)
    If n < 1 Then Exit Function
    If r = 0 Then Exit Function
    If r = 1 Then Repeat = String$(n, s): Exit Function
    Repeat = Space$(n * r)
    Mid$(Repeat, 1) = s: If n > 1 Then Mid$(Repeat, r + 1) = Repeat
End Function