相关疑难解决方法(0)

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

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

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万
查看次数

字符串比较:InvariantCultureIgnoreCase与OrdinalIgnoreCase?

哪个代码更好:

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# string

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

在C#中,ToUpper()和ToUpperInvariant()之间有什么区别?

在C#中,ToUpper()和之间有什么区别ToUpperInvariant()

你能举例说明结果可能有所不同吗?

c# internationalization

122
推荐指数
4
解决办法
5万
查看次数

string.Empty.StartsWith(((char)10781).ToString())总是返回true?

我试图处理以下字符:⨝(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)

.net c# string unicode char

6
推荐指数
1
解决办法
960
查看次数

KeyValuePair的不区分大小写的键比较

编辑:文化这些内部操作表明不变文化 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上添加构造函数.

有没有更好的方法呢?有正确的方法吗?我应该考虑哪些因素?

c#

2
推荐指数
1
解决办法
1312
查看次数

如何按字母顺序对字符数组进行排序,以使同一个字母的大写和小写版本相邻?

例如

输入数组:'a','b','B','A'

使用Array.Sort()输出:'A','B','a','b'

期望的输出:'A','a','B','b'

我理解为什么'A'被认为低于'a',但我希望它按字母顺序排序,而不是按字符的相应整数排序.

是否有一个Comparer类可以解决问题作为Array.Sort()的第二个参数?

c# arrays sorting

0
推荐指数
1
解决办法
204
查看次数