从Integers数组构建VB.NET字符串

时间:2018-03-06 01:39:15

标签: string vb.net unicode

我需要根据.csv文件中的Unicode值构造一个字符串。我已经使用Python来提取整数值,我需要在VB.NET中重建字符串,以检查字符串是否存在于文件解析器中。 我尝试过同时使用ChrChrW函数,但是当我达到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}
)

任何人都知道怎么做?

2 个答案:

答案 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系列类。