You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET按回车换行符分割字符串失败的问题求助

VB.NET按回车换行符分割字符串失败的问题求助

嗨,我来帮你捋捋这个问题!你所有的分割尝试都失败,核心原因其实是你定义字符串的时候用错了换行符的写法——VB.NET里不像C#那样用\r、\n作为转义字符表示回车换行,你写的"abc\rsome data \nmore data\n the end\r"里的\r和\n都是字面量的字符(也就是反斜杠加字母r/n),而不是真正的回车(Chr(13))和换行(Chr(10))控制字符!

咱们逐个看你写的代码问题:

  • 第一个Split(New Char() {Chr(13), Chr(10)}):你要分割的是真正的回车/换行,但字符串里根本没有这些字符,只有\+r、\+n,自然分割不出来
  • 第二个用Environment.NewLine:同样,字符串里没有Windows系统真正的换行符(\r\n组合),只有字面量的\r和\n,所以匹配不到
  • 第三个Replace(Chr(13), "").Split(Chr(10)):你替换的是真正的回车字符,但字符串里的是\r字面量,替换等于没做,Split自然也无效
  • 第四个Split(New Char() {vbCrLf, vbCr, vbLf}, ...):这里还有个小错误——vbCrLf是字符串类型(\r\n组合),不能放到Char数组里,Char数组只能放单个字符,这个代码其实编译都会报错
  • 第五个Split(New Char() {"\r", "\n", "\r\n"}, ...):同样,"\r"是字符串,不是Char类型,写法本身就不对,编译不通过

正确的解决步骤:

  1. 先确保字符串里有真正的回车/换行控制字符:
    定义字符串时,要用VB.NET的内置常量或者Chr函数来表示控制字符:

    ' 方式一:用VB内置的换行常量
    Dim info As String = "abc" & vbCr & "some data " & vbLf & "more data" & vbLf & " the end" & vbCr
    ' 方式二:用Chr函数
    Dim info As String = "abc" & Chr(13) & "some data " & Chr(10) & "more data" & Chr(10) & " the end" & Chr(13)
    

    如果你的字符串是从外部获取的(比如文件、网络请求),那它本身应该已经包含真正的控制字符,不需要手动写字面量\r。

  2. 用正确的方式分割:
    推荐用兼容所有换行格式(Windows的\r\n、Linux的\n、Mac旧版的\r)的分割方式,同时去掉空元素:

    Dim lines As String() = info.Split({vbCr, vbLf}, StringSplitOptions.RemoveEmptyEntries)
    

    如果你只需要针对Windows系统的换行,也可以直接用Environment.NewLine:

    Dim lines As String() = info.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
    

这样处理后,分割出来的lines数组就会正确包含每一段内容啦!

备注:内容来源于stack exchange,提问作者Impostor Syndrome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 09:32:57