Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > microsoft.public.excel.programming > #110755

Re: Remove leading zeros from string

From GS <gs@v.invalid>
Newsgroups microsoft.public.excel.programming
Subject Re: Remove leading zeros from string
Date 2018-10-14 09:52 -0400
Organization A noiseless patient Spider
Message-ID <ppvhnl$99v$1@dont-email.me> (permalink)
References <dddc43bc-8bc0-4e02-93fc-83c322b486a1@googlegroups.com> <8467ae2e-0389-433a-964c-9be21000076b@googlegroups.com> <ppulof$8l4$1@dont-email.me> <cf9d42dc-47a2-4d25-bce8-33f212329577@googlegroups.com>

Show all headers | View raw


>>> 
>>> ?Replace("32 01 22 88 03", "0", "")
>> 
>> Oops! That's going to replac *ALL* zeros; - the task is to replace *LEADING* 
>> ZEROS ONLY!!
>> 
>
> I devised the following solution. Maybe using regular expressions
> is overkill, but it worked.  Here it is:
>
> Public Sub MyReplace()
> ' Include"Microsoft VBScript Regular Expressions 5.5" in Tools->References
> Dim regEx As New VBScript_RegExp_55.RegExp
>
> Dim s1 As String
> Dim sFinal As String
> Dim sExample As String
>
> sExample = "01 07 08 22 88 06 04"
>
> ' Replace leading zeros (in middle of line)
> regEx.Pattern = " 0"
> regEx.Global = True
> regEx.IgnoreCase = False
> s1 = regEx.Replace(sExample, " ")
>
> ' Remove leading zeros (at beginning of line)
> regEx.Pattern = "^0"
> regEx.Global = True
> regEx.IgnoreCase = False
> sFinal = regEx.Replace(s1, "")
>
> MsgBox sFinal
>
> End Sub
>
>
> - Robert Crandall

Yep, too much typing for me! I already have functions for various filtering 
needs; here's one for removing leading zeros...


Function NoPad_Zeros$(sText$)
' Returns a string with no leading zeros
  Dim vTmp, n&
  Application.Volatile

  vTmp = Split(sText, " ")
  For n = LBound(vTmp) To UBound(vTmp)
    vTmp(n) = CLng(vTmp(n))
  Next 'n
  NoPad_Zeros = Join(vTmp, " ")
End Function

..that you can call from code OR use as a cell formula.

In the IW:
  ?nopad_zeros("01 07 08 22 88 06 04")
  Returns 1 7 8 22 88 6 4

In a cell:
  A1 contains 01 07 08 22 88 06 04
  B1 contains =nopad_zeros(A1)
     displays 1 7 8 22 88 6 4

-- 
Garry

Free usenet access at http://www.eternal-september.org
Classic VB Users Regroup!
  comp.lang.basic.visual.misc
  microsoft.public.vb.general.discussion

Back to microsoft.public.excel.programming | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Remove leading zeros from string Tatsujin <tatsujin.3.r@gmail.com> - 2018-10-13 04:08 -0700
  Re: Remove leading zeros from string Claus Busch <claus_busch@t-online.de> - 2018-10-13 13:19 +0200
  Re: Remove leading zeros from string Ramon-México <cesaramon@gmail.com> - 2018-10-13 21:00 -0700
    Re: Remove leading zeros from string GS <gs@v.invalid> - 2018-10-14 01:55 -0400
      Re: Remove leading zeros from string Tatsujin <tatsujin.3.r@gmail.com> - 2018-10-14 02:33 -0700
        Re: Remove leading zeros from string GS <gs@v.invalid> - 2018-10-14 09:52 -0400
          Re: Remove leading zeros from string GS <gs@v.invalid> - 2018-10-14 10:09 -0400

csiph-web