Console.WriteLine(String.Compare(A, a));本句执行的结果为1,我很是不解,我原以为会输出-1。
首先该方法用字符串A和字符串a比较,如果字符串A小于字符串a,应返回一个负整数,这是该方法的解释。其次该方法是逐字符比较,比较到最后,遇到A和a不等,且A按理说应该小于a,根据ascii码表。
请老师们指点。
using System;namespace _03_16
{
class Class_03_16
{
public static void Main(String[] args)
{
string a = "string a";
string A = "string A";
string b = "string b"; Console.WriteLine(String.CompareOrdinal(b, A));
Console.WriteLine(String.CompareOrdinal(A, a));
Console.WriteLine(String.CompareOrdinal(b, a)); Console.WriteLine(String.Compare(b, A));//输出1
Console.WriteLine(String.Compare(A, a));//输出1,该方法是逐字符比较,最后应该输出-1才对。
Console.WriteLine(String.Compare(b, a));
Console.WriteLine(String.Compare(a, A,true));
}
}
}
首先该方法用字符串A和字符串a比较,如果字符串A小于字符串a,应返回一个负整数,这是该方法的解释。其次该方法是逐字符比较,比较到最后,遇到A和a不等,且A按理说应该小于a,根据ascii码表。
请老师们指点。
using System;namespace _03_16
{
class Class_03_16
{
public static void Main(String[] args)
{
string a = "string a";
string A = "string A";
string b = "string b"; Console.WriteLine(String.CompareOrdinal(b, A));
Console.WriteLine(String.CompareOrdinal(A, a));
Console.WriteLine(String.CompareOrdinal(b, a)); Console.WriteLine(String.Compare(b, A));//输出1
Console.WriteLine(String.Compare(A, a));//输出1,该方法是逐字符比较,最后应该输出-1才对。
Console.WriteLine(String.Compare(b, a));
Console.WriteLine(String.Compare(a, A,true));
}
}
}
Compare( )方法是CompareTo( )方法的静态版本。只要使用“=”运算符,就会调用Equals( )方法,的以Equals( )方法与“=”是等价的。CompareOrdinal( )方法对两个字符串比较不考本地语言与文件
字符串比较函数
//这是字符串比较和其他字符比较方法是不一样的,不是按ASCII码,其字母顺序是aAbBcCdD...进行的,
所以你明白了
string.compare被归为考虑区域性的一种排序比较。
CompareOrdinal则是序号排序比较,直接将string中的每个字符逐个换成char对象,去进行比较。
所以作为一个还没有学到太多内部函数知识的初学者,1楼和2楼的回复,对于我来说,是很难理解的。
3楼没有给出直接答案,而是指了一条路,顺着这条路,找到了一些更深入的答案,当然这些答案对于我目前来说,都很抽象,难以理解。不过最好还是谢谢三位的关注。开始散分。