xZe*_*rox 1 c# regex vb.net pattern-matching
我如何从VB.net将其转换为C#.我尝试了在线转换器但是当我把它放在我的项目中时我遇到了错误.
Dim regexinfo As String = String.Empty
Dim p = "\[news\](?<info>.*?)\[/news\]"
Dim Matches = Regex.Matches(response, p, RegexOptions.IgnoreCase Or RegexOptions.Singleline)
If Matches IsNot Nothing AndAlso Matches.Count > 0 Then
For Each Match As Match In Matches
If Match.Groups("info").Success Then
regexinfo = (Match.Groups("info").Value)
End If
Next
End If
Run Code Online (Sandbox Code Playgroud)
我猜它是"匹配"变量,它的名称与导致问题的类型相同.这应该做你想要的:
var p = @"\[news\](?<info>.*?)\[/news\]";
var Matches = Regex.Matches(response, p, RegexOptions.IgnoreCase | RegexOptions.Singleline);
string regexinfo = Matches.LastOrDefault(m=>m.Groups("info").Success) ?? string.Empty;
Run Code Online (Sandbox Code Playgroud)
这段代码在功能上等同于你原来的VB.Net,即使它只有3行而不是10行(而且很容易只有1行).
例如,不需要原始代码中的"if"条件,因为Matches()函数将返回一个空集合而不是null,并且?? string.Empty()片段负责处理未找到的情况.因此,即使代码发生了变化,行为也没有.但这不是ac#vs VB的事情; VB.Net也可以在一行中完成.您可能希望通过使用FirstOrDefault()而不是使用而进一步改进LastOrDefault().只是后者与你原创匹配而前者不匹配.
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |