1

Textbox1.textの文字列値が含まれている場合ZU4、その文字列を数値ASCIIコードに変換し、2番目のテキストボックスに出力するにはどうすればよいですか?

FOR LOOPINPUTのすべての文字を読み取る条件ステートメントを使用してこれを実行したいですか?

サンプル:

INPUT  Textbox1.Text = ZU4
OUTPUT Textbox2.Text = 908552
4

5 に答える 5

1

LINQ を使用することもできます。

TextBox2.Text = String.Join(String.Empty, From c In Textbox1.Text.ToCharArray Select (Asc(c).ToString))

いくつかの就職の面接で役に立つかもしれません... :)

于 2012-12-29T15:30:08.800 に答える
0

C#での1つのアプローチは次のとおりです。

Textbox2.Text = string.Empty;
foreach(var c in Textbox1.Text)
{
  Textbox2.Text += ((int)c).ToString();
}

VB.NET:

Textbox2.Text = String.Empty
For Each c As Char In Textbox1.Text
  Textbox2.Text = Textbox2.Text + Convert.ToInt32(c).ToString()
Next

それ:

  • クリアしますTextbox2.Text
  • 入力の各文字をループします
  • 文字列として出力された整数値を出力テキストに連結します
于 2012-12-29T15:07:50.077 に答える
0

他のすべての回答は、指定された例で機能しますが、提案の一部は、ASCII ではなく Unicode エンコーディングを使用しています。ASCII エンコーディングに厳密に従うことが重要な場合は、使用するエンコーディングを明示的に指定する必要があります。

Convert.ToInt32UTF-16 エンコーディングを使用します。どうCIntなるかはわかりませんが、同じように機能すると思います。を使用するAsc方が優れていますが、それでもスレッドのコード ページ設定に依存するため、完全に安全というわけではありません。それに加えてAsc、主に下位互換性のために VB.NET で提供されている古い VB6 関数です。

したがって、ASCIIEncoding代わりにクラスを使用することをお勧めします。名前空間内のクラスの共有ASCIIプロパティを使用して、そのクラスのインスタンスを取得できます。たとえば、次のようになります。EncodingSystem.Text

Public Function ConvertTextToAsciiDigits(text As String) As String
    Dim builder As New StringBuilder()
    For Each b As Byte In Encoding.ASCII.GetBytes(text)
        builder.Append(b.ToString())
    Next
    Return builder.ToString()
End Function

次に、次のように関数を呼び出すことができます。

Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)

ただし、すべての文字が 2 桁の数字にならなければ、結果の文字列が使用できるとは思えません。したがって、次のようにして、強制的に 2 桁にします。

Public Function ConvertTextToAsciiDigits(text As String) As String
    Dim builder As New StringBuilder()
    For Each b As Byte In Encoding.ASCII.GetBytes(text)
        If b > 99 then
            Throw New FormatException()  ' Throws an exception if the value is three digits
        End If
        builder.Append(b.ToString("00"))  ' Adds a leading zero to one-digit values
    Next
    Return builder.ToString()
End Function

以下のコメントで述べたように、4桁ごとにハイフンを追加するには、次のように、最後のハイフン以降に追加された合計桁数を追跡できます。

Public Function ConvertTextToAsciiDigits(text As String) As String
    Dim builder As New StringBuilder()
    Dim digitsSinceHyphen As Integer = 0
    For Each b As Byte In Encoding.ASCII.GetBytes(text)
        If b > 99 then
            Throw New FormatException()
        End If
        builder.Append(b.ToString("00"))
        digitsSinceHyphen += 2
        If digitsSinceHyphen >= 4 Then
            builder.Append("-")
            digitsSinceHyphen = 0
        End If
    Next
    Return builder.ToString()
End Function
于 2012-12-29T19:11:23.847 に答える
0
TextBox2.Text = ""
For i As Integer = 0 To TextBox1.TextLength - 1
    TextBox2.Text += Asc(TextBox1.Text(i)).ToString()
Next
于 2012-12-29T15:11:20.213 に答える
0

このリンクからコードを変更しました

Function AsciiEncode(ByVal value As String) As String
            Dim encValue As New System.Text.StringBuilder(value.Length * 6)
            Dim c As Char
            For Each c In value
                encValue.Append(Convert.ToInt32(c))
            Next
            Return encValue.ToString()
End Function

利用方法:

   Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
        TextBox2.Text = AsciiEncode(TextBox1.Text)
    End Sub
于 2012-12-29T15:11:36.750 に答える