替换回调在VS2013中工作但不在ideone中

时间:2014-05-11 20:53:36

标签: regex vb.net visual-studio-2013 callback

今天在VB.NET中使用正则表达式并测试一个简单的替换回调lambda。

代码在VS2013中完美编译,但是想法会对它产生尖叫。想知道VB.NET专业人士是否会对此有所了解。 :)

正则表达式并不重要,它是测试该功能的随机示例。我关心的是替换回调。我非常热衷于将MatchEvaluator保持在Replace内部,如下所示,而不是单独声明该函数。

在VS2013中,以下代码正确输出AAA111000(无警告,无错误)。但是ideone doesn't like itprog.vb (8,1) : Error VBNC90019: Expected ')'

Imports System
Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim SomeRegex As New Regex("\d{3}")
Dim Subject As String = "AAA123456"
Dim NewString As String = SomeRegex.Replace(Subject,
                    Function(m As Match)
                        If (m.Groups(0).Value = "123") Then
                            Return "111"
                        Else 
                            Return "000"
                        End If
                     End Function                        
                    )
Console.WriteLine(NewString)
Console.WriteLine(vbCrLf & "Press Key")
 Console.ReadKey()
End Sub
End Module

1 个答案:

答案 0 :(得分:0)

VB.NET似乎与Ideone不太合作。我想也许在这种情况下,缺少行继续字符会让你失望,但即使你解决了这个问题,你也可能会遇到其他问题。