我正在学习VB脚本,我对这个概念非常陌生......
请告诉我们如何编写以下程序
使用redim preserve创建一个在动态数组中输入到z的函数。
由于 库马尔
答案 0 :(得分:0)
欢迎使用Stack Overflow。在询问任何未来的问题之前,请务必阅读this。请特别注意,Stack Overflow不是代码编写服务。换句话说,我们鼓励您首先尝试自己的解决方案,并将其与您的问题中的任何研究工作证据一起发布,我们可以帮助您解决代码中的错误或指向其他地方的解决方案。
话虽这么说,我知道你正在学习VB,我碰巧已经有了一个片段来做你想要的,所以这里是:
Const StartChar = "a"c
Const EndChar = "z"c
Dim converterOp As New Func(Of Char, Integer)(Function(input As Char) Char.ConvertToUtf32(input, 0))
Dim result() As Char = {}
For i = converterOp(StartChar) To converterOp(EndChar)
ReDim Preserve result(UBound(result) + 1)
result(UBound(result)) = CChar(Char.ConvertFromUtf32(i))
Next
给定一个字符范围内的起始字符和结束字符(在本例中为"a"c
到"z"c
),它将两个字符转换为它们的Unicode代码点值,以便从数字开始循环以For
循环结束。在每个循环迭代中,它将一个新的数组元素添加到数组的末尾,将当前循环索引(也就是在开始字符和结束字符之间的某个位置的Unicode代码点)转换回字符,并用该字符填充新的数组元素。
我知道您特别想使用ReDim Preserve
来实现它,但这是一种更有效的方法,因为它不会产生在每次循环迭代中重新标注数组的开销:
Const StartChar = "a"c
Const EndChar = "z"c
Dim converterOp As New Func(Of Char, Integer)(Function(input As Char) Char.ConvertToUtf32(input, 0))
Dim intStartCodePoint = converterOp(StartChar)
Dim intEndCodePoint = converterOp(EndChar)
Dim result(intEndCodePoint - intStartCodePoint) As Char
Dim arrIndex = 0
For i = intStartCodePoint To intEndCodePoint
result(arrIndex) = CChar(Char.ConvertFromUtf32(i))
arrIndex += 1
Next
这里的区别在于它在进入循环之前对数组进行了维度,使用开始和结束代码点来计算数组的大小。
我希望这会有所帮助。