sscanf 忽略所有空格_VBA实用小程序56: 删除多余空格

学习Excel技术,关注微信公众号:

excelperfect

下面的自定义函数:TrimAllSpace函数,可以将词语之间含有多个空格分隔的字符串整理成只有一个空格分隔词语的字符串,同时移除字符串开头和结尾处的空格。该函数有两个参数,其中第二个参数设置是否保留字符串中的制表符,默认为True,即不保留制表符。

TrimAllSpace函数的代码:

'删除前导和结尾处的空格

'并将里面的多个空格(包括制表符)缩减为单个空格

'参数strText:要移除多余空格的字符串

'参数bRemoveTabs:指定是否将制表符转换成单个空格

'默认为True,即删除制表符

Function TrimAllSpace(ByVal strText AsString, _

 Optional bRemoveTabs As Boolean = True) As String

    '声明变量

   Dim strTemp As String

   Dim strOutput As String

   Dim i As Integer

   Dim strChar As String * 1

    '如果想将制表符转换成单个空格

    '使用了TranslateString函数

   If bRemoveTabs Then

       strText = TranslateString(strText, vbTab, " ")

   End If

    '移除前导和结尾处的空格

   strTemp = Trim(strText)

    '依次遍历每个字符

   For i = 1 To Len(strTemp)

       strChar = Mid$(strTemp, i, 1)

        '如果字符是一个空格且前一个字符也是空格,忽略

        '否则,添加到输出字符串

       If Not (strChar = " " And Right$(strOutput, 1) = "") Then

            strOutput = strOutput & strChar

       End If

   Next i

    '返回结果

   TrimAllSpace = strOutput

End Function

这个函数调用了TranslateString函数:

If bRemoveTabs Then

   strText = TranslateString(strText, vbTab, " ")

End If

将字符串包含的所有制表符转换成空格。TranslateString函数代码及说明详见《VBA代码库07:功能强大的字符替换函数》。

代码中还有一个技巧就是:

'如果字符是一个空格且前一个字符也是空格,忽略

'否则,添加到输出字符串

If Not (strChar = " " AndRight$(strOutput, 1) = " ") Then

   strOutput = strOutput & strChar

End If

注意,双引号之间是一个空格。如果前一个添加到输出字符是空格,当前字符也是空格,则忽略当前字符,否则添加到输出字符串中。这样,输出字符串中不会有相邻的两个空格。很巧妙的思路,值得学习!


TrimAllSpace函数测试结果如图1所示。

cbf966b84f63b679fd316d4ad659c9ad.png

图1

TrimAllSpace函数程序代码的图片版如下:

3ccb290b3758ba459158afcc9bf96e6f.png

8f73ebe994b131436dbf63804af84697.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值