VB.NET将字母数字转换为整数
如果VB.NET将字母数字转换为整数,vb.net,Vb.net,如果Textbox1.text包含字符串值ZU4,如何将该字符串转换为数字ASCII码,并将其输出到第二个文本框 我想使用一个FOR循环条件语句来实现这一点,它将读取输入中的每个字符 样本: INPUT Textbox1.Text = ZU4 OUTPUT Textbox2.Text = 908552 这里有一种方法,用C#表示: VB.NET: Textbox2.Text = String.Empty For Each c As Char In Textbox1.Text Textbo
Textbox1.text
包含字符串值ZU4
,如何将该字符串转换为数字ASCII码,并将其输出到第二个文本框
我想使用一个FOR循环
条件语句来实现这一点,它将读取输入中的每个字符
样本:
INPUT Textbox1.Text = ZU4
OUTPUT Textbox2.Text = 908552
这里有一种方法,用C#表示:
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
- 循环输入中的每个字符
- 将整数值输出作为字符串连接到输出文本
- 这里有一种方法,用C#表示:
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
- 循环输入中的每个字符
- 将整数值输出作为字符串连接到输出文本
Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
TextBox2.Text = AsciiEncode(TextBox1.Text)
End Sub
我修改了这个代码 用法:
Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
TextBox2.Text = AsciiEncode(TextBox1.Text)
End Sub
您还可以使用LINQ:
TextBox2.Text = String.Join(String.Empty, From c In Textbox1.Text.ToCharArray Select (Asc(c).ToString))
可能对一些工作面试有用…:) 您也可以使用LINQ:
TextBox2.Text = String.Join(String.Empty, From c In Textbox1.Text.ToCharArray Select (Asc(c).ToString))
可能对一些工作面试有用…:) 所有其他答案都适用于给定的示例,但是,有些建议使用unicode编码而不是ASCII编码。如果严格遵守ASCII编码很重要,那么应该明确指定要使用的编码
Convert.ToInt32
使用UTF-16编码。我不确定什么是CInt
,但我怀疑它的工作原理是一样的。使用Asc
更好,但它仍然依赖于线程的代码页设置,因此它仍然不是完全安全的。除此之外,Asc
是VB.NET中提供的一个旧VB6函数,主要用于向后兼容
因此,我建议改用ascienceoding
类。您可以使用System.Text
命名空间中Encoding
类的共享ASCII
属性获取该类的实例,例如:
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)
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
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
但是,除非每个字符都是两位数,否则我无法想象结果字符串是否可用。因此,我会通过如下操作将其强制为两位数:
Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)
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
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
如您在下面的评论中所述,要在每四位数字后添加一个连字符,只需跟踪自最后一个连字符以来添加的总数字,如下所示:
Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)
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
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
所有其他答案都适用于给定的示例,但是,有些建议使用unicode编码而不是ASCII。如果严格遵守ASCII编码很重要,那么应该明确指定要使用的编码
Convert.ToInt32
使用UTF-16编码。我不确定什么是CInt
,但我怀疑它的工作原理是一样的。使用Asc
更好,但它仍然依赖于线程的代码页设置,因此它仍然不是完全安全的。除此之外,Asc
是VB.NET中提供的一个旧VB6函数,主要用于向后兼容
因此,我建议改用ascienceoding
类。您可以使用System.Text
命名空间中Encoding
类的共享ASCII
属性获取该类的实例,例如:
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)
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
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
但是,除非每个字符都是两位数,否则我无法想象结果字符串是否可用。因此,我会通过如下操作将其强制为两位数:
Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)
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
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
如您在下面的评论中所述,要在每四位数字后添加一个连字符,只需跟踪自最后一个连字符以来添加的总数字,如下所示:
Textbox2.Text = ConvertTextToAsciiDigits(Textbox1.Text)
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
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
首先,解释一下你是如何从输入到输出的。你的意思是
Z==90
,U==85
等等吗?首先,解释一下你是如何从输入到输出的。你的意思是Z==90
,U==85
etc?尽管这会自动更改TextBox2中的值,但这与之前发布的内容相同。Text quicky..极好的答案..这会快速回答我的问题..非常感谢..这与之前发布的内容相同,尽管这会自动更改TextBox2中的值。Text quicky..极好回答..这很快回答了我的问题..非常感谢..这一个也是一样..有直接简单的代码和逐行解释..谢谢Oded..这一个适合初学者使用Convert.ToInt32()这一个也是一样的。有直接简单的代码和逐行的解释。谢谢Oded。这一个对于使用Convert.ToInt32()的初学者很好我没有LINQ方面的知识,但我会尽快找出答案,用你最短的一行代码学习LINQ。这一行可以节省数千字节的代码。谢谢你,格泽戈尔齐没有LINQ方面的知识,但我会尽快找出答案,用你最短的一行代码学习LINQ。这一行可以节省数千字节的代码。谢谢你格泽戈尔兹·史蒂文。怎么样关于在Textbox2.Text中的每四(4)个字符中添加一个hypen“-”,那么您希望在每组四位数字后都添加一个连字符吗?比如每两个字节值之后?比如“9085-52”?哎呀。一对小虫子。我修正了答案中的例子。它们现在应该可以正常工作了。嗨,史蒂文。在Textbox2.Text中的每四(4)个字符中加一个hypen“-”怎么样?所以你想在每一组四位数后面加一个连字符吗?比如每两个字节值之后?比如“9085-52”?哎呀。一对小虫子。我修正了答案中的例子。它们现在应该能正常工作了。