用于创建二维数组的数组和分割命令

2023-11-24

我在使用 split 命令填充数组时遇到一些问题。

我目前拥有的字符串如下

MyString = "Row1 Column1[~]Row1 Column2[~]Row1 Column3" & vbNewLine & _
"Row2 Column1[~]Row2 Column2[~]Row2 Column3" & vbNewLine & _
"Row3 Column1[~]Row3 Column2[~]Row3 Column3" & vbNewLine & _
"Row4 Column1[~]Row4 Column2[~]Row4 Column3"

我有一个数组,我希望它是多维的,并且希望每个 Row# Column# 根据其编号位于数组的正确部分。

例如

MyArray(1,1) = "Row1 Column1"
MyArray(2,1) = "Row2 Column1"
MyArray(3,1) = "Row3 Column1"
MyArray(4,1) = "Row4 Column1"

MyArray(1,2) = "Row1 Column2"
MyArray(2,2) = "Row2 Column2"
MyArray(3,2) = "Row3 Column2"
MyArray(4,2) = "Row4 Column2"

MyArray(1,3) = "Row1 Column3"
MyArray(2,3) = "Row2 Column3"
MyArray(3,3) = "Row3 Column3"
MyArray(4,3) = "Row4 Column3"

现在我了解如何使用 split 命令填充一维数组

MyArray = Split(MyString, vbNewLine)

这意味着

MyArray(1) = "Row1 Column1[~]Row1 Column2[~]Row1 Column3"
MyArray(2) = "Row2 Column1[~]Row2 Column2[~]Row2 Column3"
MyArray(3) = "Row3 Column1[~]Row3 Column2[~]Row3 Column3"
MyArray(4) = "Row4 Column1[~]Row4 Column2[~]Row4 Column3"

但我不知道如何使用 split 命令来填充第二个维度。

这可能吗?如果可能的话,如何实现?
如果不可能,有人可以建议如何实际填充它吗?


除了字符串或包含字符串的变体之外,您不能对任何其他对象使用 Split()。如果要生成二维字符串数组,则需要迭代 Split() 返回的数组,并对每个字符串运行 Split()。以下函数应该执行您想要的操作:

Private Function SplitTo2DArray(ByRef the_sValue As String, ByRef the_sRowSep As String, ByRef the_sColSep As String) As String()

    Dim vasValue                    As Variant
    Dim nUBoundValue                As Long
    Dim avasCells()                 As Variant
    Dim nRowIndex                   As Long
    Dim nMaxUBoundCells             As Long
    Dim nUBoundCells                As Long
    Dim asCells()                   As String
    Dim nColumnIndex                As Long

    ' Split up the table value by rows, get the number of rows, and dim a new array of Variants.
    vasValue = Split(the_sValue, the_sRowSep)
    nUBoundValue = UBound(vasValue)
    ReDim avasCells(0 To nUBoundValue)

    ' Iterate through each row, and split it into columns. Find the maximum number of columns.
    nMaxUBoundCells = 0
    For nRowIndex = 0 To nUBoundValue
        avasCells(nRowIndex) = Split(vasValue(nRowIndex), the_sColSep)
        nUBoundCells = UBound(avasCells(nRowIndex))
        If nUBoundCells > nMaxUBoundCells Then
            nMaxUBoundCells = nUBoundCells
        End If
    Next nRowIndex

    ' Create a 2D string array to contain the data in <avasCells>.
    ReDim asCells(0 To nUBoundValue, 0 To nMaxUBoundCells)

    ' Copy all the data from avasCells() to asCells().
    For nRowIndex = 0 To nUBoundValue
        For nColumnIndex = 0 To UBound(avasCells(nRowIndex))
            asCells(nRowIndex, nColumnIndex) = avasCells(nRowIndex)(nColumnIndex)
        Next nColumnIndex
    Next nRowIndex

    SplitTo2DArray = asCells()

End Function

Example:

Dim asCells() As String

asCells() = SplitTo2DArray(MyString, vbNewline, "~")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于创建二维数组的数组和分割命令 的相关文章

随机推荐

  • 使用 twig 和 Slim 框架上传文件(版本 2)- PHP

    我正在使用 UserFrosting 一个用户管理系统 但在通过表单发布上传文件时遇到一些问题 这就是我尝试过的 这就是我的树枝文件的样子
  • 如何并行等待多个阻塞队列?

    我有两个独立的阻塞队列 客户端通常使用第一个或第二个阻塞队列来检索要处理的元素 在某些情况下 客户端对两个阻塞队列中的元素感兴趣 无论哪个队列首先提供数据 客户端如何并行等待两个队列 您可以尝试使用poll某种循环中的方法 仅在轮询另一个队
  • 可选实体框架复杂类型所需的属性

    我想定义 Required 实体框架中复杂类型的属性 例如 我有一个Customer具有可选实体Address 地址实体有一个必需的PostCode财产 ComplexType public class Address public str
  • 如何在java eclipse中将其他maven项目的依赖添加到我当前的maven项目中?

    我想在我的maven项目1中使用maven项目2类 这样我就可以将它用作父类 你能告诉我如何使用 eclipse 和 JAVA 来做到这一点吗 请写下逐步导航 因为我是 Maven 新手 提前致谢 我知道为时已晚但这可以帮助其他正在寻找同样
  • Excel VBA高效获取文件名函数

    我需要使用 Excel 2010 中的 VBA 从远程服务器上的文件夹中获取文件名集合 我有一个可以工作的函数 并且在大多数情况下它可以完成这项工作 但是远程服务器经常出现糟糕的情况 terrible网络性能问题 这意味着循环遍历 300
  • 异常处理指南 - Python 与 Java

    我是原始的 Java 开发人员 对我来说 Java 中的检查异常显然 很容易让我决定捕获它或将其扔给调用者稍后处理 然后是Python 没有受检查的异常 所以从概念上讲 没有什么会强迫你处理任何事情 根据我的经验 如果不检查文档 你甚至不知
  • 获取backstack中最新的fragment

    如何获取添加到 backstack 中的最新片段实例 如果我不知道片段标签和 id FragmentManager fragManager activity getSupportFragmentManager FragmentTransac
  • Android:如何制作 GroupBox 小部件?

    Android 似乎没有提供如此有用的小部件 但是 我的屏幕设计需要这样的视图 此外 交互设计要求根据其他数据显示和隐藏此类框 当然 我可以从 XML 布局中的单独元素 例如 从其上的形状和文本视图 构造这样的框 但管理它们的可见性会变得很
  • PhpMyAdmin 错误:令牌不匹配

    我最近在 xampp 上的 apache 上安装的本地安装中遇到错误 我正在运行 phpmyadmin v4 0 5 错误描述为错误 令牌不匹配 有其他人经历过这个并找到解决办法吗 您可以尝试以下方法 找到 XAMPP php ini 文件
  • 在 RMarkdown 的输出中显示代码块名称

    正如 RMarkdown 中所知 代码块可以这样命名 r chunkname plot x y 是否可以在输出文档中显示块名称 您可以使用knitr opts current get label example r cars library
  • 什么 Java 数据类型对应于 Oracle SQL 数据类型 NUMERIC?

    Oracle JDBC 驱动程序将什么 Java 数据类型分配给 Oracle SQL 数据类型NUMERIC 这会随着尺寸的变化而变化吗NUMERIC type 正如其他人已经说过的 驱动程序将所有内容映射到 BigDecimal 即使它
  • macOS 上的 Clang 无法从 ncurses 链接 lmenu

    我是使用 ncurses 库的新手 所以我一直在尝试重新创建此页面上的一些示例 http www tldp org HOWTO NCURSES Programming HOWTO index html 我已经获得了有关创建菜单的部分 特别是
  • 我想找到填充或搜索,猫鼬

    我的模型代码 var user mongoose Schema email password name company position phoneNumber signDate Date friends type mongoose Sch
  • 如何读取 Python 请求的响应?

    我有两个 Python 脚本 一个使用的是urllib2库一个使用请求库 我发现 Requests 更容易实现 但我找不到 urlib2 的等效项read 功能 例如 response url urlopen req print respo
  • 为什么 Linux 内核中没有零拷贝网络? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我想知道为什么linux内核 或任何其他主流操作系统 没有零拷贝网络功能的原因 我所说的零复制是指 数据包 数据流不会被复制以传递到用户空间中的应用程序 但例如使用内存池类型的分配器在内核
  • C++11 和 C++03 在对 std::string 小字符串优化的支持方面有所不同?

    在C 11标准的兼容性附录中 C 03到C 11的变化之一描述如下 C 2 11 第 21 条 字符串库 21 4 1 Change 放宽 basic string 失效规则 基本原理 允许小字符串优化 对原始特征的影响 可以执行有效的 C
  • 如何在 Three.js 中覆盖 GLTF 材质

    我正在尝试创建一种动态方式来在 Three js 中的 gltf 导入模型上显示太阳能数据 目的是将不同的纯色与模型的不同部分相关联 并能够关闭和打开它们 我当前的障碍是改变 gltf 中材质的颜色 我尝试使用 ObjLoader 来代替
  • CSS - 是否可以在父元素中选择多个不同的子元素而不重复父元素?

    我整个下午都在研究 CSS 选择器 试图找到这个问题的答案 因为它看起来很简单 但我一生都找不到任何解决方案 给定类似于以下的结构 div div
  • NullInjectorError:R3InjectorError(AppModule)[路由器 - >路由器 - >路由器]:NullInjectorError:没有路由器的提供者

    我有一个已发布的库 其中包含一个在其模板中使用 routerLink 的组件 在我的应用程序中安装库后 出现错误NullInjectorError R3InjectorError AppModule 路由器 gt 路由器 gt 路由器 Nu
  • 用于创建二维数组的数组和分割命令

    我在使用 split 命令填充数组时遇到一些问题 我目前拥有的字符串如下 MyString Row1 Column1 Row1 Column2 Row1 Column3 vbNewLine Row2 Column1 Row2 Column2