相关疑难解决方法(0)

从字符数组转换时的字符串长度

我遇到了严重的字符串处理问题.由于我的问题很难描述,我将从一些演示代码开始再现它们:

Dim s1 As String = "hi"
Dim c(30) As Char
c(0) = "h"
c(1) = "i"
Dim s2 As String = CStr(c)
s2 = s2.Trim()
If not s1 = s2 Then
   MsgBox(s1 + " != " + s2 + Environment.NewLine + _
          "Anything here won't be printed anyway..." + Environment.NewLine + _ 
          "s1.length: " + s1.Length.ToString + Environment.NewLine + _
          "s2.length: " + s2.Length.ToString + Environment.NewLine)
End If                    
Run Code Online (Sandbox Code Playgroud)

结果消息框如下所示:

消息框的屏幕截图仅显示hi!= hi但不显示文本的其余部分

这种比较失败的原因是s2的长度为31(来自原始数组大小),而s1的长度为2.

当从字节数组中读取字符串信息时,我经常偶然发现这种问题,例如,当处理来自MP3或具有预定长度的其他编码(ASCII,UTF8,...)信息的ID3Tag时.

是否有任何快速而干净的方法来防止这个问题?

将s2"修剪"为调试器显示的字符串的最简单方法是什么?

先谢谢,Janis

.net vb.net arrays string

4
推荐指数
1
解决办法
1208
查看次数

标签 统计

.net ×1

arrays ×1

string ×1

vb.net ×1