我有一个使用托管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参数创建字典的新副本更好的解决方法?
如何使下面的行不区分大小写?
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)
任何人都可以指出这个问题吗?
假设我有两个字符串: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?我在挠头.
可能重复:
是否存在C#大小写不敏感的等于运算符?
string string1 ="aBc"
string string2 ="AbC"
如何检查string1是否等于string2并使其返回true,无论区分大小写如何.
我有一个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)