Click here to Skip to main content
15,884,031 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I am currently busy on a program in which when a record is added i need to increment a letter in a text box. Please could someone help me with incrementing letters , have never done it before?

thanks
Posted

Try this code
(for sake of simplicity it assumes the input string being uppercase)
VB
Public Function Increment(ByVal s As String) As String
    Dim index As Integer = s.Length - 1
    Dim n As Integer
    While index > 0 And s.Chars(index) = "Z"
        index = index - 1
    End While

    Increment = ""
    For n = 0 To index - 1
        Increment = Increment + s.Chars(n)
    Next

    If index > 0 Then
        Increment = Increment + Microsoft.VisualBasic.ChrW(Microsoft.VisualBasic.AscW(s.Chars(index)) + 1)


        For n = index + 1 To s.Length - 1
            Increment = Increment + "A"
        Next
    Else
        Increment = "A" + s
    End If

End Function


Sub Main()
    Dim nxt As String
    nxt = Increment("ZZABZZ")
End Sub
 
Share this answer
 
Thanks for all the help
i have found an easier solution


Dim letter As String = "A"
letter = Chr(Asc(letter) + 1)
Me.letter.Text = letter
 
Share this answer
 
Hi
You will need to load the the alphabet in an array
VB
Dim letters(25) As String

letters(0) = "A"
letters(1) = "B"
letters(2) = "C"
letters(3) = "D"
letters(4) = "E"
etc.

Then You will need to grab the Text box's contents.
VB
Dim letterGrab As String

letterGrab = tbLetter.Text

Now get the letter's index
VB
Dim found As Boolean = False
Dim FoundIndex As Integer = 0
For i As Integer = 0 To 25

    If letters(i) = letterGrab Then
        found = True
        FoundIndex = i
        Exit For
    End If
Next

Finally get the new Letter and put it in the text box
VB
If found = True Then
    FoundIndex = FoundIndex + 1
    tbLetter.Text = letters(FoundIndex)
        
Else
'What to do if end of array reached
End If


If you need case insensitive comparison, change code block 3 to this:

VB
Dim found As Boolean = False
Dim FoundIndex As Integer = 0
For i As Integer = 0 To 25
Dim CaseDiff As Integer  = String.Compare(letters(i), letterGrab, True)

    If CaseDiff = 0 Then
        found = True
        FoundIndex = i
        Exit For
    End If
Next


Hope This Helps
Jacques
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900