检查列表是不是包含具有不同大小写的相同字符串

Posted

技术标签:

【中文标题】检查列表是不是包含具有不同大小写的相同字符串【英文标题】:Check if a list contains the same string with different case检查列表是否包含具有不同大小写的相同字符串 【发布时间】:2021-12-17 06:26:06 【问题描述】:

我正在尝试提供一个查询,该查询告诉我天气是否字符串列表仅在大小写不同的情况下与输入匹配。请帮忙。

如果输入是“动物”,那么我需要得到一个真实的。如果输入是“Animal”,那么我应该得到一个错误,因为输入与项目列表中的大小写完全匹配。我不能说 StringComparison.OrdinalIgnoreCase 因为它总是返回一个 true。

class Program
    
        static void Main(string[] args)
        
            string abc = "animal";
            List<string> items = new List<string>()  "Animal", "Ball" ;
            if (items.Any(x => x.Matches(abc, StringComparison.Ordinal)))
            
                Console.WriteLine("matched");
            
            Console.ReadLine();
        

    

    static class Extentions
    
        public static bool Matches(this string source, string toCheck, StringComparison comp)
        
            return source?.IndexOf(toCheck, comp) == 0;
        
    

【问题讨论】:

IndexOf0 比较是个坏主意也是 因为如果source"Animalissimo" 并且toCheck"animal",那么索引返回的是0,因为有一个子字符串最初从source开始。 【参考方案1】:

您可以比较两次:区分大小写区分大小写:

if (items.Any(item => abc.Equals(item, StringComparison.OrdinalIgnoreCase) && 
                      abc.Equals(item, StringComparison.Ordinal))) 

    Console.WriteLine("matched");

【讨论】:

谢谢你的作品。【参考方案2】:

如果我理解正确,我想你正在寻找这个:

    if (items.Any(t => abc.Equals(t, StringComparison.OrdinalIgnoreCase) &&
                  t != abc))
    
        Console.WriteLine("matched");
    

if 的第一部分将匹配字符串以检查第二部分将确保它们的大小写不同。

【讨论】:

感谢工作。我正是在寻找那个。 不要使用ToLower 进行不区分大小写的比较 - 有些字母不会在大写和小写之间往返。使用StringComparison.XXXIgnoreCase 比较之一

以上是关于检查列表是不是包含具有不同大小写的相同字符串的主要内容,如果未能解决你的问题,请参考以下文章

从Java中具有不同大小的2个数组列表中查找非相似元素

如何检查字符串是不是具有列表中的子字符串?

使用 LINQ 检查字符串是不是包含字符串或字符列表

如何检查字符串是不是包含字符列表?

测试字符串是不是包含字符串数组中的任何内容(kotlin)

如何在Java中以不区分大小写的方式检查一个字符串是不是包含另一个字符串?