String 如何改进我的十六进制转换

String 如何改进我的十六进制转换,string,vb.net,carriage-return,linefeed,String,Vb.net,Carriage Return,Linefeed,我遇到了一个问题,从数据库中获取数据(字符串),换行符为(Hex)0D。我在文本框中显示了该数据,该文本框未将0D用作linbreak。我发现文本框需要0D-0A(LF&CR,不知道哪个是哪个)来实际显示新行。为了解决这个问题,我想出了以下代码 Private Function convertString(txt As String) As String Dim data = System.Text.Encoding.Default.GetBytes(txt) Dim hexSt

我遇到了一个问题,从数据库中获取数据(字符串),换行符为(Hex)
0D
。我在
文本框
中显示了该数据,该文本框未将
0D
用作linbreak。我发现文本框需要
0D-0A
(LF&CR,不知道哪个是哪个)来实际显示新行。为了解决这个问题,我想出了以下代码

Private Function convertString(txt As String) As String
    Dim data = System.Text.Encoding.Default.GetBytes(txt)
    Dim hexString As String = BitConverter.ToString(data)
    hexString = hexString.Replace("0D", "0D-0A")
    Dim arr As [String]() = hexString.Split("-"c)
    Dim array As Byte() = New Byte(arr.Length - 1) {}
    For i As Integer = 0 To arr.Length - 1
        array(i) = Convert.ToByte(arr(i), 16)
    Next
    Return System.Text.Encoding.Default.GetString(array)
End Function
说明/程序
1.将字符串转换为字节数组
2.将ByteArray转换为十六进制字符串(十六进制字符以“-”分隔)
3.通过替换单个lf或cr来添加缺失的lf或cr
4.将十六进制字符串转换回ByteArray
5.将ByteArray转换回字符串

现在我的问题是:

我很肯定有更好的办法。如何简化这些代码行?

您应该能够使用
vbCrLf

Dim txt = "This is a" & vbCr & "test"
Encoding.UTF8.GetBytes(txt).HexDump()
给出(
hextump
是一种自定义实用程序方法,但与问题无关):

给出:

00000000 54 68 69 73 20 69 73 20 61 0D 0A 74 65 73 74 This is a··test
整个十六进制字符串的事情可能混淆了这个问题。。。如何
返回txt.Replace(vbCr,vbCrLf)
?不知道。尝试了几个组合替换vbcr vblf vbcrlf。也许我错过了这个。根据wikipedia的说法,您可能对…和
环境是正确的。因为新行是独立于平台的,所以您应该使用它。因为WinForms只是Windows,所以Environment.NewLine有什么不同?Windows可能会一直工作,或者至少能够与CR&LF一起工作..//我应该早点提到Winformstho@djv但是
TextBox
是否独立于平台(想知道Mono中的WinForms)?
Dim txt2 = txt.Replace(vbCr, vbCrLf)
Encoding.UTF8.GetBytes(txt2).HexDump()
00000000 54 68 69 73 20 69 73 20 61 0D 0A 74 65 73 74 This is a··test
Private Function convertString(txt As String) As String
    Return txt.Replace(vbCr, vbCrLf)
End Function