是否有一个函数可以将字符串与较大的字符串进行比较

本文关键字:字符串 比较 函数 是否 有一个 | 更新日期: 2023-09-27 18:14:39

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

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

我无法在问题中解释,当我说不出"是对的"时,试图在谷歌上找到我想要的是什么是困难的

是否有一个函数可以将字符串与较大的字符串进行比较

如果搜索区分大小写,则可以使用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));
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();

使用System.Linq

    private static List<String> GetNames(List<string> names ,string name)
    {
        return names.Where(x => x.ToLower().Contains(name.ToLower())).ToList();
    }

也许你还应该考虑大写(.ToUpper(和清理(。在用检查字符串之前,替换(",","(。包含,否则"johny H"就不会包含"John,"。

我们有String.Contains和String.IndexOf.

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

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
}

如果要使用Contains,则应使用适当的区域性信息将名称和键都转换为大写或小写。