首页 > 解决方案 > 如何仅替换字符串中的某些空格?

问题描述

我为 Data 创建了一个导入函数。

有时导入字符串是这样的:

47588328 2020.06.25 11:42:13 买入 0.11 欧元 1.12240 1.11902 0.00000
2020.06.25 14:05:04 1.11902 0.00 0.00 0.00 -35.35

有时像这样

45881875
2020.05.25 19:53:14
buy
0.10
eurusd
1.08975
1.08999
1.09503
2020.05.26 10:49:17
1.09503
0.00
0.00
-0.48
51.14

我将值拆分为一个数组。如果字符串由换行符分隔,则没有问题。

如果字符串用空格分隔,我无法处理它。我试图用换行符替换空格。
这可行,但有日期和时间部分。它们必须保持在一起,当我用换行符替换空格时它们不会。

我有这个:

TextboxText = UserForm1.TextBox1.Text
TextboxText = Replace(TextboxText, " ", vbLf)

我的一个想法是建立一个循环遍历所有空格,然后除了空格号 2 和 10。例如使用伪代码:

> For Each Space in TextboxText     
>     If Not space nr = 2 or space nr = 10 Then
>         replace space
>     End if 
> Next

标签: vba

解决方案


我会说像你一直在做的那样将它拆分成一个数组(大概使用split(strText)然后通过数组运行以重新加入日期和时间。如下所示

For x = LBound(myArray) to Ubound(myArray)
    'If IsDate(myArray(x)) Then - This didn't work as would erroneously return TRUE for decimals
    If Format(Cdate(myArray(x)), "yyyy") <> "1899" Then
        MyArray(x) = MyArray(x) & " " & MyArray(x+1) 'Join it to the value after
        MyArray(x+1) = "" 'Delete the value after (time value)
    End If
Next

然后,您此后对数组所做的任何事情都只需要包括例如If MyArray(x) <> ""错过那些空值。


推荐阅读