相关疑难解决方法(0)

通用字典的不区分大小写的访问

我有一个使用托管dll的应用程序.其中一个dll返回一个通用字典:

Dictionary<string, int> MyDictionary;  
Run Code Online (Sandbox Code Playgroud)

字典包含大小写的键.

另一方面,我得到一个潜在的密钥列表(字符串),但我不能保证这种情况.我试图使用键获取字典中的值.但是,由于案件不匹配,以下情况当然会失败:

bool Success = MyDictionary.TryGetValue( MyIndex, out TheValue );  
Run Code Online (Sandbox Code Playgroud)

我希望TryGetValue会有一个像MSDN文档中提到的忽略大小写标志,但它似乎对通用词典无效.

有没有办法让字典的值忽略关键案例?有没有比使用正确的StringComparer.OrdinalIgnoreCase参数创建字典的新副本更好的解决方法?

c# generics dictionary

225
推荐指数
4
解决办法
9万
查看次数

如何进行不区分大小写的字符串比较?

如何使下面的行不区分大小写?

drUser["Enrolled"] = 
      (enrolledUsers.FindIndex(x => x.Username == (string)drUser["Username"]) != -1);
Run Code Online (Sandbox Code Playgroud)

我今天早些时候给了我一些建议,建议我使用:

x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));
Run Code Online (Sandbox Code Playgroud)

麻烦的是我不能让这个工作,我已经尝试了下面的行,这个编译但返回错误的结果,它返回注册用户作为注册的未注册和未注册的用户.

drUser["Enrolled"] = 
      (enrolledUsers.FindIndex(x => x.Username.Equals((string)drUser["Username"], 
                                 StringComparison.OrdinalIgnoreCase)));
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出这个问题吗?

c# case-insensitive string-comparison

204
推荐指数
7
解决办法
22万
查看次数

无情地比较C#中的字符串

假设我有两个字符串:a和b.为了比较a和被忽略大小写时是否具有相同的值,我总是使用:

// (Assume a and b have been verified not to be null)

if (a.ToLower() == b.ToLower())
Run Code Online (Sandbox Code Playgroud)

但是,使用Reflector,我在.NET Framework中已经看过几次:

// (arg three is ignoreCase)

if (string.Compare(a, b, true) == 0)
Run Code Online (Sandbox Code Playgroud)

我测试哪个更快,每次用我使用的字符串ToLower()节拍Compare().

是否有理由Compare()而不是ToLower()?有什么不同的CultureInfo?我在挠头.

.net c# string string-comparison

13
推荐指数
2
解决办法
7993
查看次数

字符串大小写敏感度

可能重复:
是否存在C#大小写不敏感的等于运算符?

string string1 ="aBc"

string string2 ="AbC"

如何检查string1是否等于string2并使其返回true,无论区分大小写如何.

c#

3
推荐指数
1
解决办法
350
查看次数

c#从文本文件中计算相同的字符串

我有一个foreach声明,我从文本文件中经过几行,在那里我已经修剪并整理出我需要的行.我想要做的是计算相同字符串的出现次数.我该怎么做呢?

这是我的代码.这是if我被困的第二个陈述:

        foreach (string line in lines.Where(l => l.Length >= 5))
        {
            string a = line.Remove(0, 11);

            if ((a.Contains(mobName) && a.Contains("dies")))
            {

                mobDeathCount++;
            }
            if (a.Contains(mobName) && a.Contains("drops"))
            {
                string lastpart = a.Substring(a.LastIndexOf("drops"));
                string modifiedLastpart = lastpart.Remove(0, 6);

            }
Run Code Online (Sandbox Code Playgroud)

下面是一些线条的样子:

一袋硬币

siog白兰地

一袋硬币

一袋硬币

Cath Shield

破烂的卷轴

所以我想要做的是计算有3行硬币袋.但我需要做到这一点,它可以成为一切,这是一个巨大的下降列表.所以不能添加所有的em,需要太长时间

编辑

    private static void Main()
    {
        int mobDeathCount = 1;
        int lootCheckCount = 1;

        string[] lines =
            System.IO.File.ReadAllLines(@"C:\Users\Michael\Documents\Electronic Arts\Dark Age of Camelot\chat.log");
        Console.WriteLine(
            "Enter which mob you want …
Run Code Online (Sandbox Code Playgroud)

c# string counter

3
推荐指数
1
解决办法
1440
查看次数