当前位置: 代码迷 >> VB Dotnet >> 关于TextBox奇怪的现象,何位大侠给解释一下
  详细解决方案

关于TextBox奇怪的现象,何位大侠给解释一下

热度:234   发布时间:2016-04-25 02:22:02.0
关于TextBox奇怪的现象,哪位大侠给解释一下?
关于对多行TextBox行分隔符的困惑,哪位大侠给指导一下?
测试数据:
第一行:123
第二行:45
用以下代码进行测试,显示结果为3_3、3_2

        '需设置TextBox1.Multiline = True
        Dim t_txt As String = TextBox1.Text
        Dim txtarray As Array = t_txt.Split(vbCrLf)
        If txtarray.Length > 1 Then
            '获取前两个数据长度
            MessageBox.Show(txtarray(0).Length & "_" & txtarray(1).Length)
            txtarray(0) = txtarray(0).Replace(Chr(10), "")
            txtarray(1) = txtarray(1).Replace(Chr(10), "")
            MessageBox.Show(txtarray(0).Length & "_" & txtarray(1).Length)
        End If

------解决方案--------------------
没错啊,你看你显示的是什么,lengh,长度啊
------解决方案--------------------
上述代码进行测试,Msbox显示结果为3_3、3_3
显示正常!不知楼主有什么疑惑?
------解决方案--------------------
45前面有空格
------解决方案--------------------
 Dim txtarray As Array = Split(t_txt, vbCrLf)
Msbox显示结果为3_2、3_2

------解决方案--------------------
第二个textbox里有换行符
------解决方案--------------------
vb的split函数用vbcrlf分割以后,vbcrlf其实是两个字符,vbcr和vblf ,ascii码应该1个是10,1个是13吧,其中前面的一个字符串含有vbcr,后一个含有vblf
需要编程去掉
------解决方案--------------------
replace函数好像是替换不掉Asc(10)的,可以用substr

------解决方案--------------------
说明,windows下换行效果是由回车符和换行符共同完成的,回车就是将光标回到一行的起始,换行就是下一行。其中,回车对应于vbCr即Chr(13),换行对应于vbLf即Chr(10)。
根据现象来看,结果是:
Split(vbCrLf) 虽然写的是 vbCrLf 但是和 Split(vbCr) 是一样的,分割后的第二个字符串仍包含vbLf。发生这个现象的具体原因不详,可能和vbCrLf是控制字符有关吧。而replace 是正常的。

由于替换实际上与使用vbCr 一样,所以
txtarray(0) 里没有 vbLf(也就是Chr(10))的,所以replace没有也可以
txtarray(1) 是包含 vbLf(也就是Chr(10))的,所以replace将其替换为空,最终长度就少了1。


  相关解决方案