0

我有一个 textbox2.text,我将它声明为一个字符串,即 myletters,我还有一个 label36.text,我还将它声明为一个字符串,即模式。

我只会在文本框中输入从“a”到“z”的字母,之所以有 label36,是因为当我再次输入相同的字母时,它会显示一条错误消息。

到目前为止,这是我的代码。

Imports System.Text.RegularExpressions

Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click
  Dim patterns As String
  patterns = Label36.Text
  Dim myletters As String
  myletters = TextBox2.Text
  Dim matches As MatchCollection = Regex.Matches(myletters, patterns)
  If Regex.IsMatch(patterns, myletters) Then
    MsgBox("You already typed this letter.")
  Else
    Label36.Text = Label36.Text + myletters + ","
  End If
End Sub

到目前为止,顶部的用途是我的代码,如果我已经再次输入相同的字母,它将显示错误,如果我没有输入相同的字母,则给出此代码。

示例输出:

A组:a,b,c,d,e

现在这是我的问题。

1) 我如何输入我的第一个字母而不用逗号?

示例:
一个

但我的输出是
示例:
a,

2) 如何将我的文本框设置为最多输入 1 个字母?

3)我怎样才能把逗号放在正确的时间和格式?

示例 1:
a
示例 2:
a,b

但我的示例是
示例 1:
a,
示例 2:
a,b,

4) 我怎样才能把字母安排在正确的位置?

示例 1:
a,z

如果我将输入“x”,则输出必须是

示例 2:
a,x,z

4

2 回答 2

1

您要求进行很多更改,尽管或多或少很容易:

"2) 如何将我的文本框设置为最多输入 1 个字母?

TextBox2.MaxLength = 1

(或通过从上影响MaxLength属性)Properties PanelDesign View

其他 3 个问题通过代码中的更新版本来回答else

myletters = myletters.ToLower() 
If Regex.IsMatch(patterns, myletters) Then
    MsgBox("You already typed this letter.")
Else
    If (Label36.Text.Trim.Length > 0) Then
        Label36.Text = Label36.Text & "," & myletters

        Dim allLetters() As String = Label36.Text.Split(",")
        Array.Sort(allLetters)

        Label36.Text = ""
        For Each leter As String In allLetters
            Label36.Text = Label36.Text & leter & ","
        Next
        Label36.Text = Label36.Text.Substring(0, Label36.Text.Length - 1).ToLower() 'To delete the last ","
    Else
        Label36.Text = myletters
    End If
End If
于 2013-07-21T13:18:31.103 回答
1

我建议您将字母存储在字符串数组而不是字符串中,如下所示:

Dim myLettersArray As String() = New String() {"a", "b", "c"}

通过使用String()as 类型,您可以遍历您的字母,如下所示:

For Each letter As String In myLettersArray
    ' Do something with letter
Next

要强制您的输入文本框 ( TextBox2) 只允许单个字符,那么您可以使用set to的MaxLength属性,如下所示:TextBox

TextBox2.MaxLength = 1

注意:有关详细信息,请阅读TextBox.MaxLength 属性文档。

要对您的字母进行排序(阅读:按字母顺序排列),您需要做的就是调用Sort(),如下所示:

Array.Sort(testArray, StringComparer.InvariantCulture)

最后,逗号的输出问题源于您附加逗号而不是前置逗号的事实,如下所示:

Dim counter As Integer = 1
For Each letter As String In myLettersArray
    ' Check if this is the first letter
    If counter = 1 Then
        Label36.Text = Label36.Text & letter
    Else
        Label36.Text = Label36.Text & ", " & letter
    End If

    counter = counter + 1
Next
于 2013-07-21T13:21:03.187 回答