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 Panelに影響を与えることによってDesign 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()することで、次のように文字をループできます。

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

入力テキスト ボックス ( ) に 1 文字のみを許可するには、次のようにセットのプロパティをTextBox2使用できます。MaxLengthTextBox

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 に答える