关于对多行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。