Csharp/C#教程:C#片段需要复制VBA Like运算符分享


C#片段需要复制VBA Like运算符

我正在转换包含LIKE运算符的VBA代码,如

dim sToken as String if sToken Like "(*,*)" then ... 

在所有情况下,模式仅使用匹配任何字符串(包括空字符串)的*通配符。 VBA Like运算符只产生一个true / false结果,因此可以根据后续的VBA代码进行进一步解析,并在匹配时拔出匹配的子字符串。

如果有人能提供C#片段来测试相同类型的简单通配符,我将非常感激。 如果片段也产生匹配的子串 – 甚至更好。

那么,那个特殊的模式可以匹配

 if (sToken.StartsWith("(") && sToken.EndsWith(")") && sToken.Contains(",")) 

但一般来说,您可能会发现使用正则表达式更有意义。 例如:

 using System; using System.Text.RegularExpressions; class Program { static void Main(string[] args) { Regex regex = new Regex(@"^(.*,.*)$"); Console.WriteLine(regex.IsMatch("x(a,b)")); // False due to the x Console.WriteLine(regex.IsMatch("(a,b)x")); // False due to the x Console.WriteLine(regex.IsMatch("(ab)")); // False due to the lack of , Console.WriteLine(regex.IsMatch("(a,b")); // False due to the lack of ) Console.WriteLine(regex.IsMatch("(a,b)")); // True! Console.WriteLine(regex.IsMatch("(aaa,bbb)")); // True! Console.WriteLine(regex.IsMatch("(,)")); // True! } } 

这里有关于模式的注意事项:

MSDN “正则表达式语言元素”页面是.NET正则表达式的一个很好的参考。

有几个人建议使用正则表达式,这对于这种情况应该很有效。 另一个选择是直接从C#代码使用VB Like运算符。 这可以通过调用Compiler helper LikeOperator.LikeString来完成。 此函数位于VB运行时程序集Microsoft.VisualBasic.dll中,可从C#中使用。

 using Microsoft.VisualBasic.CompilerServices; ... if (LikeOperator.LikeString(sToken, "(*,*)")) { ... } 

我不相信这个版本与Like的VBA版本有100%的同等性,但它会非常接近并且会与常见场景相匹配。

如果你想要一些恒星匹配能力,我建议进入正则表达式 。

上述就是C#学习教程:C#片段需要复制VBA Like运算符分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1037670.html

(0)
上一篇 2022年1月25日
下一篇 2022年1月25日

精彩推荐