[AccessD] Treat string as array

Gustav Brock Gustav at cactus.dk
Tue Mar 25 02:42:11 CDT 2008


Hi A.D.

Very creative solution!

For how long time will JC chew on this dry stick? Next step is probably that the spaces he specified originally which should not be present should be present anyway or perhaps replaced by a tab or a white space! Lots of options out there ...

/gustav

>>> adtp at airtelmail.in 25-03-2008 08:06 >>>
    A very concise version of Function Fn_ConvStringToArray(), using only a single statement, is placed below. It returns an array, so that individual characters of input string get placed in individual elements of the array.

    Note - In fact, right side of assignment statement (A) below, can be used directly, as it is made up purely of access built-in functions. Fn_ConvStringToArray() acts merely as a wrapper function, for sake of convenience.

A.D.Tejpal
------------

' Code to be placed in VBA module
'================================
Function Fn_ConvStringToArray(StrInput _
                                As String) As Variant
    Fn_ConvStringToArray = _
                Split(Format(StrInput, _
                Mid(Replace(String(Len(StrInput), _
                "~"), "~", "~@"), 2)), "~")                         ' (A)
End Function
'================================

  ----- Original Message ----- 
  From: A.D.Tejpal 
  To: Access Developers discussion and problem solving 
  Cc: A.D.Tejpal 
  Sent: Tuesday, March 25, 2008 11:01
  Subject: Re: [AccessD] Treat string as array


      Function Fn_ConvStringToArray(), as given below, returns an array, so that individual characters of input string get placed in individual elements of the array.

      Note - The three line block of code involving For/Next loop could have been replaced by a single statement using String() function. However, String() function recognizes only one character as its last argument.

  A.D.Tejpal
  ------------

  ' Code to be placed in VBA module
  '=============================
  Function Fn_ConvStringToArray(StrInput _
                                  As String) As Variant
      Dim Fmt As String, Cnt As Long
      
      For Cnt = 1 To Len(StrInput)
          Fmt = Fmt & "~@"
      Next
      ' Strip leading ~
      Fmt = Mid(Fmt, 2)
      Fn_ConvStringToArray = _
                  Split(Format(StrInput, Fmt), "~")
  End Function
  '=============================






More information about the AccessD mailing list