【问题标题】:how to find string in another string by using vba only如何仅使用 vba 在另一个字符串中查找字符串
【发布时间】:2015-12-19 23:25:23
【问题描述】:

所以我有

  Dim str1
  str1 = "Cat"
  Dim str2
  str2 = "concatenate"

我想知道是否有一种方法可以将 str1 与 str2 匹配并在 str2 中的 str1 匹配(不区分大小写)时返回非零正数?

【问题讨论】:

标签: string vba excel


【解决方案1】:

对于 VBA,instr 是要走的路:

InStr(1, str2, str1, vbTextCompare)

第一部分是它开始寻找的地方,在这种情况下是第一个字符。

第二个是发生搜索的字符串。

第三个是搜索参数。

第四个判断是否看二进制值的文本。因此,对于不区分大小写的情况,我们使用 vbtextcompare。

【讨论】:

  • 如果 str1 和 str2 是带有字符串的数组,并且 str1(i) 与所有 str2(j) 比较匹配,这会起作用吗?
  • 没有。有很多方法可以做到这一点,循环和字典,这取决于正在搜索的内容。但这不是你问的。
  • 如果找到匹配项,哪个变量会返回正值?
  • 被调用的函数的结果如果找到则返回正数,否则返回零。因此,对于您的示例,结果将是 4。您将创建一个变量并将其设置为上面的函数。
  • 要使用数组,您必须循环并比较每个位置。
【解决方案2】:

使用 indexOf 方法:

str2.indexOf(str1)

【讨论】:

  • 如果 str1 和 str2 是带有字符串的数组并且 str(i) 与所有 str(j) 进行比较匹配,这是否有效?
  • 不,其他任何答案都不会。你需要循环。
  • 是的,我必须循环,但它也适用于数组
  • 索引数组会返回特定位置的对象。如果该对象是一个字符串,它会表现得像一个,因为它是一个。
【解决方案3】:

使用 instr 或 instrrev:

instr(str2, str1, 1)

请参阅msdn 了解更多信息。 这正是您所需要的。

【讨论】:

  • 我可能错了,但这是针对 vb 而不是 vba,这是 OP 要求的。
猜你喜欢
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 2021-01-22
  • 2014-01-25
  • 2019-10-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
相关资源
最近更新 更多