编辑: 好的,因为我使用的是2.0 Framework。我有什么想法可以修改那个区域或替代方案吗?不幸的是,我必须坚持使用2.0
Dim dir2 As New DirectoryInfo("d:\input")
Dim sw2 As New StreamWriter("d:\input\reportCond.txt")
For Each fi2 As FileInfo In dir2.GetFiles("report.txt")
Dim sr2 As New StreamReader(fi2.FullName)
While Not sr2.EndOfStream
Dim sLine As String = sr2.ReadLine
Dim myPath As String = sLine
Dim fileName As String =System.IO.Path.GetFileNameWithoutExtension(myPath)
Dim letters As String = fileName.Where(Function(c) Char.IsLetter(c)).ToArray
Dim comp As String = sLine.Substring(28)
sw2.WriteLine(letters)
End While
Next
上面的代码昨天工作正常,今天它没有,我无法弄清楚原因。唯一的区别是昨天我在VS2013上运行它,今天它不能在VS2010上运行。
我在函数中遇到错误"表达式预期"
另一个关于sw2.WriteLine(字母)说"姓名'字母'没有宣布。
答案 0 :(得分:3)
以下是如何替换linq Where
部分以获取字母变量 - 其中包含文件名中的字符。
dim c as char
Dim letters As String
for each c in s
if char.IsLetter(c)
letters += c
end if
next
答案 1 :(得分:1)
我会使用bool
类来构建字符串:
StringBuilder
答案 2 :(得分:1)
。{2.0}框架替代Where
扩展方法可以是:
Dim letters As String = Array.FindAll(fileName.ToCharArray(), AddressOf Char.IsLetter)
这将创建一个新的字符数组,其元素将是fileName.ToCharArray
的所有字符,Char.IsLetter
为True