我正在尝试在VB.NET上执行String.Split,但它似乎不起作用。感谢任何帮助,看看我缺少什么:
在C#中:
sFileContents = File.ReadAllText(f.FullName);
sLines = sFileContents.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
在VB.NET中:
sFileContents = File.ReadAllText(f.FullName)
sLines = sFileContents.Split(New String() {"\r\n"}, StringSplitOptions.RemoveEmptyEntries)
在C#中,我得到正确分割的行数,在VB.NET中我只得到1行。
由于
答案 0 :(得分:1)
使用此:
sFileContents = File.ReadAllText(f.FullName)
sLines = sFileContents.Split({ Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
另请注意,上面的代码中省略了New String()
。 VB.NET可以直接接受{ <element>, <element> }
形式的数组。因此,不需要New
关键字和初始值设定项。
您实际上应该使用Environment.NewLine
,因为您无法确定不同平台上的行结尾。
在VB.NET中,"\r\n"
本身被解释为"\r\n"
,而不像C#那样被解释为Carriage-Return + NewLine
。它们被称为特殊字符。 VB.NET没有。它只是需要转义的双引号(通过使用对)。例如:
Dim result = "He said, ""This is some code.""" 'Yields : He said, "This is some code."
另一种选择是使用预定义的VB.NET常量,如vbCrLf
,但我会说Environment.NewLine
是更好的方法。
答案 1 :(得分:1)
转义序列在VB.NET中不起作用。
您应该使用VB.NET常量:vbCrLf,vbLf
sFileContents = File.ReadAllText(f.FullName)
Dim arg() As String = {vbCrLf, vbLf}
sLines = sFileContents.Split(arg, StringSplitOptions.RemoveEmptyEntries)