热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将regexp匹配发送到字符串数组-sendregexpmatchestoanarrayofstrings

Imtryingtogetthecodebelowtosendtheresultsoftheregexpsearchtoanarrayofstrings.Ho

I'm trying to get the code below to send the results of the regexp search to an array of strings. How can I do that?

我正在尝试使用下面的代码将regexp搜索的结果发送到字符串数组。我怎样才能做到这一点?

When I change name to an array of strings i.e. Dim name() as String VBA throws a type-mismatch exception. Any idea what I can do to fix that?

当我将名称更改为字符串数组时,即Dim name()作为字符串VBA引发类型不匹配异常。知道我能做些什么来解决这个问题吗?

Many thanks.

非常感谢。

 Do While Not EOF(1)
    Line Input #1, sText
    If sText <> "" Then


       Dim Regex As Object, myMatches As Object

       ' instantiates regexp object
       Set Regex = CreateObject("Vbscript.RegExp")
       With Regex
            .MultiLine = False
            .Global = True
            .IgnoreCase = False
            .Pattern = "^Personal\sname\s*[:]\s*"
       End With

       ' get name, seperated from Personal Name
       If Regex.test(sText) Then

            Set myMatches = Regex.Execute(sText)
            Dim temp As String
            temp = Regex.Replace(sText, vbNullString)
            Regex.Pattern = "^[^*]*[*]+"
            Set myMatches = Regex.Execute(temp)
            Dim temp2 As String
            temp2 = myMatches.Item(0)
            name = Trim(Left(temp2, Len(temp2) - 3))

        End If
    End If
Loop

2 个解决方案

#1


3  

You should not use "name" as a variable name as it conflicts with an excel property. Try sName or sNames instead, where s is for string.

您不应将“name”用作变量名,因为它与excel属性冲突。请尝试使用sName或sNames,其中s代表字符串。

With a array you need to give it a size before you can assign a value to each element.

对于数组,您需要先为其指定大小,然后才能为每个元素指定一个值。

Dim sNames(4) As String  '// Or Dim sNames(1 To 4) As String

sName(1) = "John"
...
sName(4) = "Sam"

or if you don't know the total number of elements (names) to begin with then:

或者如果你不知道开始的元素(名称)的总数,那么:

Dim sNames() As String
Dim iTotalNames As Integer

iTotalNames = '// Some code here to determine how many names you will have

ReDim sNames(iTotalNames) '// You can also use ReDim Preserve if you have existing elements

sName(1) = "John"
...
sName(4) = "Sam"

So I suspect you will need something like:

所以我怀疑你需要这样的东西:

  Dim sNames() As String
  Dim iTotalNames As Integer

  '// Your code ....

  iTotalNames = iTotalNames + 1
  ReDim Preserve sNames(iTotalNames)
  sNames(iTotalNames) = Trim(Left(temp2, Len(temp2) - 3))

  '// Rest of your code ...

Also in VBA all dimensioning of variables should be at the top of the module.

同样在VBA中,变量的所有维度都应位于模块的顶部。

#2


0  

change

更改

'call this "A"
Dim temp2 As String
temp2 = myMatches.Item(0)

to

'stick this at the top
 redim temp2(0 to 0)

'replace "A" with this
 new_top = ubound(temp2)+1
 redim preserve temp2 (0 to new_top)
 temp2(new_top) = myMatches.Item(0)

推荐阅读
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • 本文介绍了在Java中检查字符串是否仅包含数字的方法,包括使用正则表达式的示例代码,并提供了测试案例进行验证。同时还解释了Java中的字符转义序列的使用。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
author-avatar
sunqingfen5863
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有