VB - 功能有效,不再有了

时间:2015-05-13 17:43:57

标签: vb.net visual-studio-2010 visual-studio-2013

编辑: 好的,因为我使用的是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(字母)说"姓名'字母'没有宣布。

3 个答案:

答案 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.IsLetterTrue