例如,我需要查看一个字符串是否包含一个子字符串,所以我只是这样做:

String helloworld = "Hello World"; 
if(helloworld.Contains("ello"){ 
    //do something 
} 

但如果我有一系列元素
String helloworld = "Hello World"; 
String items = { "He", "el", "lo" }; 

我需要在 String 类中创建一个函数,如果有任何一个,它将返回 true
例如,数组中的项目包含在字符串中。

对于这种情况,我想用 Contains(IEnumerable) 覆盖函数 Contains(string),而不是在另一个类中创建函数。是否可以这样做,如果可以,我们如何覆盖该功能?非常感谢。

所以这里有完整的解决方案(谢谢大家):
public static bool ContainsAny(this string thisString, params string[] str) { 
    return str.Any(a => thisString.Contains(a)); 
} 

请您参考如下方法:

你不能覆盖这个函数,但是你可以创建一个 extension method为了这:

public static class StringExtensions { 
     public static bool ContainsAny(this string theString, IEnumerable<string> items) 
     { 
         // Add your logic 
     } 
} 

如果您引用程序集并包含命名空间,您就可以像字符串上的普通方法一样调用它:
String helloworld = "Hello World"; 
String[] items = new string[] { "He", "el", "lo" }; 
 
if (helloworld.ContainsAny(items)) {  
   // Do something 
} 

(当然,您可以将其称为“包含”,就像标准字符串方法一样,但我更愿意给它一个更明确的名称,以便您检查的内容一目了然......)


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!