user7194514
user7194514

Reputation:

VB.NET textbox remove last dash

How can I remove the last - added after the code has been entered.
All the - are automatically added.

Here my code :

Dim strKeyTextField As String = txtAntivirusCode.Text
Dim n As Integer = 5
Dim intlength As Integer = txtAntivirusCode.TextLength

While intlength > 4
    If txtAntivirusCode.Text.Length = 5 Then
        strKeyTextField = strKeyTextField.Insert(5, "-")
    End If

    Dim singleChar As Char
    singleChar = strKeyTextField.Chars(n)

    While (n + 5) < intlength
        If singleChar = "-" Then
            n = n + 6

            If n = intlength Then
                strKeyTextField = strKeyTextField.Insert(n, "-")
            End If
        End If
    End While

   intlength = intlength - 5
End While

'' Define total variable with dashes
txtAntivirusCode.Text = strKeyTextField
'sets focus at the end of the string
txtAntivirusCode.Select(txtAntivirusCode.Text.Length, 0)

Output is : XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-

What I want : XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

Upvotes: 0

Views: 241

Answers (2)

Andrew Morton
Andrew Morton

Reputation: 25013

The other way from removing the last "-" is to not add the last "-", for example:

Dim s = "ABCDE-FGHIJKLMNOPQRSTUVWXYZ"

Dim batchSize = 5
Dim nBatches = 5
Dim nChars = nBatches * batchSize

' take out any dashes
s = s.Replace("-", "")
' make sure there are not too many characters
If s.Length > nChars Then
    s = s.Substring(0, nChars)
End If

Dim sb As New Text.StringBuilder

For i = 1 To s.Length
    sb.Append(s.Chars(i - 1))
    If i Mod batchSize = 0 AndAlso i <> nChars Then
        sb.Append("-")
    End If
Next

Console.WriteLine(sb.ToString())

Console.ReadLine()

Outputs:

ABCDE-FGHIJ-KLMNO-PQRST-UVWXY

Upvotes: 2

G43beli
G43beli

Reputation: 3952

You could just remove the last char in the string like that:

txtAntivirusCode.Text = strKeyTextField.Substring(0, strKeyTextField.Length - 1)

or

txtAntivirusCode.Text = strKeyTextField.Remove(strKeyTextField.Length - 1)

or

txtAntivirusCode.Text = strKeyTextField.Trim({" "c, "-"c})

or

txtAntivirusCode.Text = strKeyTextField.TrimEnd(CChar("-"))

If there is a possibility of a space at the end of the string use .Trim() before Substring and/or Remove

Upvotes: 2

Related Questions