我需要根据.csv
文件中的Unicode值构造一个字符串。我已经使用Python来提取整数值,我需要在VB.NET中重建字符串,以检查字符串是否存在于文件解析器中。
我尝试过同时使用Chr
和ChrW
函数,但是当我达到8315
值时,两者都会出错。
Public Function FromAsciiArray(AsciiArray As Integer()) As String
Dim strOut As String = ""
For Each asciiValue In AsciiArray
strOut += ChrW(asciiValue)
Next
Return strOut
End Function
Dim strVECTOR = FromAsciiArray(
New Integer() {86, 69, 67, 84, 79, 82, 32, 40, 109, 109, 47, 115, 8315, 185, 41}
)
任何人都知道怎么做?
答案 0 :(得分:2)
这有效:
Dim arr = New Integer() {86, 69, 67, 84, 79, 82, 32, 40, 109, 109, 47, 115, 8315, 185, 41}
Dim str = String.Concat(arr.Select(Function(n) Convert.ToChar(n)))
Console.WriteLine(str)
答案 1 :(得分:1)
Public Function FromIntegers(CharacterValues As IEnumerable(Of Integer)) As String
Return New String(CharacterValues.Select(Function(c) Convert.ToChar(c)).ToArray())
End Function
这将适用于数组,列表和其他整数序列(从名称中删除“数组”,并在我们处理时修复“ASCII”)。您可以像在问题中一样调用它:
Dim VECTOR As String = FromIntegers(
New Integer() {86, 69, 67, 84, 79, 82, 32, 40, 109, 109, 47, 115, 8315, 185, 41}
)
...我做了一点调整,现代代码倾向于使用定义而不是名称前缀来声明变量的类型。
如果你真的想玩得开心,你也可以这样做:
Public Function FromIntegers(ParamArray CharacterValues() As Integer) As String
Return New String(CharacterValues.Select(Function(c) Convert.ToChar(c)).ToArray())
End Function
这将让你像在问题中一样调用函数:
Dim VECTOR As String = FromIntegers(
New Integer() {86, 69, 67, 84, 79, 82, 32, 40, 109, 109, 47, 115, 8315, 185, 41}
)
并且也称之为:
Dim VECTOR As String = FromIntegers(86, 69, 67, 84, 79, 82, 32, 40, 109, 109, 47, 115, 8315, 185, 41)
最后,如果您确定字符编码并且取决于Python端处理事物的方式或解析csv数据的方式,我们可能仍然可以通过System.Text.Encoding系列类。