overloop

SplitJoin.vba

Jan 22nd, 2016
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ' align = 0 join head (align left)  {"1 2","3","4"}
  2. ' align = 1 join tail (align right) {"1","2","3 4"}
  3. Function SplitJoin(ByVal s As String, delim As String, count As Integer, align As Integer)
  4.     Dim result() As String
  5.     ReDim result(0 To count - 1)
  6.    
  7.     parts = Split(s, delim)
  8.    
  9.     u = UBound(parts)
  10.     Z = u + 1 - count
  11.    
  12.     If Z < 0 Then
  13.         If align = 1 Then
  14.             For i = 0 To u
  15.                 result(i - Z) = parts(i)
  16.             Next
  17.         Else
  18.             For i = 0 To u
  19.                 result(i) = parts(i)
  20.             Next
  21.         End If
  22.     Else
  23.         If align = 1 Then
  24.             For i = 0 To count - 1
  25.                 result(i) = parts(i)
  26.             Next
  27.             For i = count To u
  28.                 result(count - 1) = result(count - 1) + delim + parts(i)
  29.             Next
  30.         Else
  31.             result(0) = parts(0)
  32.             For i = 1 To Z
  33.                 result(0) = result(0) + delim + parts(i)
  34.             Next
  35.             For i = Z + 1 To u
  36.                 result(i - Z) = parts(i)
  37.             Next
  38.         End If
  39.     End If
  40.    
  41.     SplitJoin = result
  42.    
  43. End Function
  44.  
  45. Function StringArrayToString(a)
  46.     t = """" & a(0) & """"
  47.     For i = 1 To UBound(a)
  48.         t = t & "," & """" & a(i) & """"
  49.     Next
  50.     StringArrayToString = "{" & t & "}"
  51. End Function
  52.  
  53. Sub main()
  54.  
  55. Dim s As String
  56.  
  57. s = "1 2 3 4"
  58.  
  59. Debug.Print StringArrayToString(SplitJoin(s, " ", 3, 0)) ' {"1 2","3","4"}
  60. Debug.Print StringArrayToString(SplitJoin(s, " ", 3, 1)) ' {"1","2","3 4"}
  61. Debug.Print StringArrayToString(SplitJoin(s, " ", 4, 0)) ' {"1","2","3","4"}
  62. Debug.Print StringArrayToString(SplitJoin(s, " ", 4, 1)) ' {"1","2","3","4"}
  63. Debug.Print StringArrayToString(SplitJoin(s, " ", 6, 0)) ' {"1","2","3","4","",""}
  64. Debug.Print StringArrayToString(SplitJoin(s, " ", 6, 1)) ' {"","","1","2","3","4"}
  65.  
  66. End Sub
Advertisement
Add Comment
Please, Sign In to add comment