将变体数组转换为字符串
Posted
技术标签:
【中文标题】将变体数组转换为字符串【英文标题】:Convert Variant Array to String 【发布时间】:2014-03-17 13:56:34 【问题描述】:我正在尝试获取一个变体变量并将其转换为字符串,以便我可以对数据运行拆分函数。但是,每当我尝试重新定义变体时,都会出现类型不匹配错误。我使用了 CStr()、Str() 和 ToString 函数。没有工作。
我缺少什么吗?
Function FlatLine(ByVal lines As Variant)
Dim flat() As String
ReDim Preserve flat(i)
For i = 0 To UBound(lines)
flat(UBound(flat)) = lines(i)
ReDim Preserve flat(LBound(flat) To UBound(flat) + 1)
Next i
Dim flat2 as String
flat2 = Cstr(flat)
^ errors there.
【问题讨论】:
1)flat
是 array 字符串,flat2
是字符串。你打算如何将字符串数组转换为字符串? 2) 为什么不直接使用ReDim flat(0 To UBound(lines))
?
我不确定我是否理解你的第二个问题(我自己是新手),之后的最终游戏是使用这个新字符串并运行拆分。如果我尝试使用您建议的 ReDim,我会得到所有 "" 单位的值。
相对于我的第二个问题,您还应该在循环中使用 flat(i) = lines(i)
并删除行 ReDim Preserve flat(LBound(flat) To UBound(flat) + 1)
。那么,the end game after this is to take this new string and run a split.
- 什么新字符串? flat
是 array 字符串,但不是单个字符串。您不能将字符串数组转换为单个字符串。
@simoco "你不能将字符串数组转换为单个字符串" ...除非你使用 Join()?
@boost,将字符串数组连接到单个字符串并将字符串数组转换为字符串是完全不同的事情。最后一个是不可能的。在这个 Q 中加入数组对我来说毫无意义 - 因为为什么 OP 应该加入字符串数组然后将其拆分回数组?它的意义何在?
【参考方案1】:
据我所知,for 是没用的。更好的 ReDim flat 并生成 flat2 如下
ReDim flat(UBound(lines))
flat2 = Join(flat,"|")
事实上,鉴于行以 ByVal 的形式出现,您可能可以
flat2 = Join(lines,"|")
【讨论】:
感谢您的建议。分隔符将是一个“|”,不幸的是我没有非空白行。以上是关于将变体数组转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章