从单个字符串中提取字符串,然后删除空格

Posted

技术标签:

【中文标题】从单个字符串中提取字符串,然后删除空格【英文标题】:Pulling strings from a single string and then deleting the spaces 【发布时间】:2018-04-03 15:08:07 【问题描述】:

我有一个条形码,我需要从该字符串中提取特定部分。它是一个巨大的标识符代码,它有 90 个字符长,每个位置都有特定的含义,我只需要把这 9​​0 个字符的字符串拉出来作为一个字符串,字符 16-35、35-43 和 89。

是否有一个 VBA 函数可以让我使用一次或三次将这些字符串中的每一个从原始字符串中提取出来?

此外,在每个字符串内部都有不使用字符的空格,我希望删除这些空格以使以下每个字符串更短。

Original String = FE52I     FJKD4T52BCYT8L           LEN274H9QRR                              ME01B29BC4GPSI

I need:     
String 1 = "T52BCYT8L"   
String 2 = "LEN274H9QRR"   
String 3 = "S"   

如果字符串 1 和 2 的长度不同,此条形码中有额外的空间作为占位符。 提前谢谢你的帮助!

【问题讨论】:

考虑使用中间,即中间(文本、起始位置、字符数) 空间见:***.com/questions/8571192/… 对于最终答案,为什么是 3 个字符串变量而不是 3 个字符串的单个数组? String 2 = "LEN274H9QRR" 你在你的问题中说 and pull out as a string, chars 35-43 所以出了点问题,因为拉出 35-43 个字符会让你得到 LEN274H9Q 而不是 LEN274H9QRR 【参考方案1】:

此代码将提取您在帖子中指定的字符串,还将删除空格:

Sub GET_STRINGS(ByVal ThisBarCode As String)

Dim STR_A, STR_B, STR_C As String

STR_A = Replace(Mid(ThisBarCode, 16, 20), " ", "")
STR_B = Replace(Mid(ThisBarCode, 35, 10), " ", "")
STR_C = Replace(Mid(ThisBarCode, 89, 1), " ", "")

Debug.Print STR_A
Debug.Print STR_B
Debug.Print STR_C

End Sub

你在这里得到的输出将是:

T52BCYT8L
LEN274H9Q
S

注意第二个不适合您的示例,因为我按照您的说明进行操作(提取 35-43 个字符),所以这段代码可能需要稍作更新当你确切地知道你想要什么时。但这很容易。只需设置Mid Function 即可提取多少个字符,仅此而已。

此外,此代码仅在您的条形码长度为 90 个字符时才能正常工作,例如您的示例。

【讨论】:

以上是关于从单个字符串中提取字符串,然后删除空格的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中如何区分数组中的空格,并提取数组单个字符!求大神讲解!

从字符串中删除美国邮政编码:R regex

Java问题:从字符串中提取用空格隔开的数字

如何从 char 数组中清除单个字符?

Java问题:从字符串中提取用空格隔开的数字

删除数字,然后从字符串的开头删除一个空格