0

解释我的问题的更好方法是这样

列出姓名中包含给定字符串的人的姓名。例如,如果给定字符串是“John”,则系统将显示姓名中包含“John”的每个人的姓名,例如“John Smith”、“Elton Johns”和“johnny H”。

我无法在问题中解释它,并且当我无法正确表达时试图在 Google 上找到我正在寻找的内容是很困难的

4

5 回答 5

2

如果您的搜索区分大小写,您可以使用Contains

var name = "John Smith";
if(name.Contains("John"))
{
   // Name contains John
}

或者,要获取包含John的所有名称:

var names = new string[] {"John Smith", "Bob Smith", "Frank"};
var results = names.Where(n => n.Contains("John"));

如果要忽略大小写,可以将两个字符串都转换为小写:

var results = names.Where(n => n.ToLower().Contains("john"));

您还可以实现自己的不区分大小写的Contains函数作为扩展方法:

public static bool Contains(this string value, string substr, StringComparison c)
{
  return value.IndexOf(substr, c) >= 0;
}

然后使用:

var results = names.Where(n => n.Contains("John", StringComparison.OrdinalIgnoreCase));
于 2013-05-21T05:37:50.837 回答
0
IList<string> lst = new List<string>();

lst.add("John Smith");
lst.add("Elton Johns");
lst.add("mark");
lst.add("jones");

现在获取名称包含"John"

var resultList = lst.Where(x => x.Contains("John")).ToList();
于 2013-05-21T05:42:40.583 回答
0

使用 System.Linq

    private static List<String> GetNames(List<string> names ,string name)
    {
        return names.Where(x => x.ToLower().Contains(name.ToLower())).ToList();
    }
于 2013-05-21T05:44:10.507 回答
0

我们有String.ContainsString.IndexOf

String.Contains:返回一个值,指示指定的 String 对象是否出现在此字符串中。

String.IndexOf:报告此实例中第一次出现指定 Unicode 字符或字符串的从零开始的索引。如果在此实例中未找到字符或字符串,则该方法返回 -1。

Contains是区分大小写的,所以如果你想给“John”并找到“johnny H”,最好使用IndexOf

var key = "John";
var names = new[]{"John Smith", "Elton Johns", "johnny H"};
foreach(var name in names)
if(name.IndexOf(key, StringComparison.InvariantCultureIgnoreCase) > -1) {
    // Name contains the key
}

如果你想使用,你应该使用适当的文化信息将名称和键转换为大写或小写。

于 2013-05-21T05:46:23.480 回答
0

也许您还应该考虑将字符串大写(.ToUpper)和清理(.Replace(",", ""))您的字符串,然后再使用.Contains进行检查,否则“johny H”将不包含“John”。

于 2013-05-21T05:46:34.323 回答