Link to home
Start Free TrialLog in
Avatar of hogan9111
hogan9111

asked on

vb.net count characters then add a symbol

I am using visual basic and I want to know how I can count so many characters and then add a certain symbol

example that I have is:


L20Tom  Brady   12340golf

It needs to be when the code sees the line that starts with L to
make the line look lke this

L:20:Tom:Brady:12340:Golf

Now the line data will never be the same but it will have the same fixed length. The L will be the identifier to signal to do the above,

So
where 20 is would be 2 characters
Tom = 4 five characters
Brady = 10 characters
12340 = 5 chars
Golf= 4 chars

so lets say the next line would be

L40JimmyBrad    123  base

it would do this to the line

L:40:Jimmy:Brad:123:base

striping out the empty spaces.

Is this hard to do????


Avatar of Arthur_Wood
Arthur_Wood
Flag of United States of America image

do I understand you correctly that whent the FIRST CHARACTER is a 'L' the line will ALWAYS be laid out as

1 Character
2 DIGITS
5 Characters (may have trailing blanks)
10 Characters (may have trailing blanks)
5 Digits
4 characters

Is that correct?

AW
Avatar of hogan9111
hogan9111

ASKER

yes the L will never change

and are the other character counts ALWAYS the same

2 characters ('20' in your example) followed by
5 Characters ('Tom  ' or 'Jimmy' in you examples) foloowed by
10 Characters ('Brady     ' or 'Brad      ' in your examples) followed by
5 Characters ('12340' in your example) followed by
4 characteres ('golf' or 'base' in your examples)

AW
ASKER CERTIFIED SOLUTION
Avatar of Arthur_Wood
Arthur_Wood
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Dim mainLine as string = "L40JimmyBrad    123  base "

Dim temp As String
Dim temp1 As String
Dim temp2 As String
Dim temp3 As String
Dim temp4 As String
Dim temp5 As String

temp = mainLine.Substring(0, 1)
temp1 = mainLine.Substring(2, 4)
temp2 = mainLine.Substring(5, 10)
temp3 = mainLine.Substring(11, 21)
temp4 = mainLine.Substring(22, 27)
temp5 = mainLine.Substring(28, 32)


Dim position1 As Int16 = temp1.IndexOf(" ")
Dim position2 As Int16 = temp2.IndexOf(" ")
Dim position3 As Int16 = temp3.IndexOf(" ")
Dim position4 As Int16 = temp4.IndexOf(" ")
Dim position5 As Int16 = temp5.IndexOf(" ")

If position1> 0 Then
temp1 = temp1.substring(0,position1)
End If
If position2> 0 Then
temp2 = temp2.substring(0,position2)
End If
If position3> 0 Then
temp3 = temp3.substring(0,position3)
End If
If position4> 0 Then
temp4 = temp4.substring(0,position4)
End If
If position5> 0 Then
temp5 = temp5.substring(0,position5)
End If

Dim resultline as string = temp + ":" + temp1 + ":" + temp2 + ":" + temp3 + ":" + temp4 + ":" + temp5


It might not be the best way to solve this problem... but still this will give you resulting string as you want

Best of luck
Ankit
one question though: what is this line actually doing??

 StrResult = StrResult.Substring(0, StrResult.Length - 1)
in the loop, I append a ":" after each substring, so this last statement drops the ":" which would have appeared after the LAST block.  It takes the Substring the starts at the first character and extends to the next to last character (Length - 1)

AW