我想将我输入的字符串转换为等效的十六进制。
例如:
我有字符串D7 ,我希望将其转换为十六进制D7 ,以便只能读取十六进制值的软件才能读取它。 / p>
bla-bla-bla =错误,因为没有相应的十六进制
aBc = ABC ,因为它的十六进制等效。
123 = 123 ,因为它的十六进制等值。
12 AB 3.14 = 错误,因为没有相应的十六进制
3.F1 = 错误,因为没有相应的十六进制
虽然我不确定,但我想这就是结果。只要没有每个文本的十六进制等值,那么它就会出错。
编辑:我已经尝试转换德米特里的C#代码,但它仍然无效。我星期一再试一次
这是代码
Dim source As String = "abc789Def"
Dim Sb As New StringBuilder(source.Length)
For Each c As Char In source
If ((c >= "0" AndAlso c <= "9") Or (c >= "a" AndAlso c <= "f") Or (c >= "A" AndAlso c <= "F")) Then
Sb.Append(Char.ToUpper(c))
Dim result As String = Sb.ToString
Console.WriteLine("result " & result)
Else
Console.Write("Error")
End If
Next
答案 0 :(得分:2)
看来,如果 all ,则希望字符串为大写,其中的字符位于['0'..'9']
或{{1 }或['a'..'f']
范围(C#代码):
['A'..'F']
修改:没有 Linq 解决方案:
String source = "abc789Def";
if (source.All(c => (c >= '0' && c <= '9') ||
(c >= 'a' && c <= 'f') ||
(c >= 'A' && c <= 'F'))) {
String result = source.ToUpper();
//TODO: put a relevant code here
}
else {
// error: at least one character can't be converted
}
答案 1 :(得分:1)
使用System.Globalization.NumberStyles.HexNumber样式,TryParse方法在整数类型上提供验证十六进制数的功能。
Dim inputValue As String = "23"
Dim returnValue As String = Nothing
If ValidateAndFormatHex(inputValue, returnValue) Then
Console.WriteLine(returnValue)
Else
Console.WriteLine("Error")
End If
Private Shared Function ValidateAndFormatHex(input As String, ByRef formattedValue As String) As Boolean
input = input.Trim().ToUpperInvariant
Dim result As Int32
Dim parses As Boolean = Int32.TryParse(input, System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, result)
If parses Then formattedValue = input
Return parses
End Function