如何使下面的行不区分大小写?
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)
任何人都可以指出这个问题吗?
哪个代码更好:
int index = fileName.LastIndexOf(".", StringComparison.InvariantCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
要么
int index = fileName.LastIndexOf(".", StringComparison.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud) 在C#中,ToUpper()和之间有什么区别ToUpperInvariant()?
你能举例说明结果可能有所不同吗?
我试图处理以下字符:⨝(http://www.fileformat.info/info/unicode/char/2a1d/index.htm)
如果你检查一个以这个字符开头的空字符串,它总是返回true,这没有任何意义!这是为什么?
// visual studio 2008 hides lines that have this char literally (bug in visual studio?!?) so i wrote it's unicode instead.
char specialChar = (char)10781;
string specialString = specialChar.ToString();
// prints 1
Console.WriteLine(specialString.Length);
// prints 10781
Console.WriteLine((int)specialChar);
// prints false
Console.WriteLine(string.Empty.StartsWith("A"));
// both prints true WTF?!?
Console.WriteLine(string.Empty.StartsWith(specialString));
Console.WriteLine(string.Empty.StartsWith(((char)10781).ToString()));
Run Code Online (Sandbox Code Playgroud) 编辑:文化这些内部操作表明不变文化 OrdinalIgnoreCase是最合适的.
KeyValuePair是密封的.如果我有var a = KeyValuePair<string,int>("foo",1)并且var b = KeyValuePair<string,int>("FOO",2)我比较a.Key == b.Key我会得到假.
我想成真.首先,我将KeyValuePairs包装在一个自定义类中:
public class MyKeyValuePair
{
private KeyValuePair<string, int> myKeyValuePair;
public SyncItem(string Key, int Value)
{
myKeyValuePair = new KeyValuePair<string, int>(Key, Value);
}
public string Key { get { return myKeyValuePair.Key; } }
public int Value { get { return myKeyValuePair.Value; } }
}
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是我可以.ToLower()在Key上添加构造函数.
有没有更好的方法呢?有正确的方法吗?我应该考虑哪些因素?
例如
输入数组:'a','b','B','A'
使用Array.Sort()输出:'A','B','a','b'
期望的输出:'A','a','B','b'
我理解为什么'A'被认为低于'a',但我希望它按字母顺序排序,而不是按字符的相应整数排序.
是否有一个Comparer类可以解决问题作为Array.Sort()的第二个参数?