字符串比较的原理是什么?
原理:
从两个字符串的第一个字符开始逐个进行比较(按字符的ASCII值进行大小比较),直到出现不同的字符或遇到‘\0’为止。
如果全部字符都相同,就认为两字符串相等,返回0;
若出现了不相同的字符,则以第一个不相同的字符比较结果为准,若前者字符大于后者,则返回1,否则返回-1.
注意:
顺序是第一个对象与第二个对象比较!
前>后 return 1;
前=后 return 0;
前<后 return -1
CompareTo方法与Compare方法实现的功能是一样的,只是参数的位置放的不一样而已
eg. s1.CompareTo(s2):
表示字符串s1与s2进行大小比较,
s1<s2 s1.CompareTo(s2)结果为:-1
s1=s2 s1.CompareTo(s2)结果为:0
s1>s2 s1.CompareTo(s2)结果为:1
eg.String.Compare(s1,s2)该方法所显现的功能与上面一样,连返回值结果也一样。
表示字符串s1与s2进行大小比较,
s1<s2 String.Compare(s1,s2)结果为:-1
s1=s2 String.Compare(s1,s2)结果为:0
s1>s2 String.Compare(s1,s2)结果为:1
代码比较如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication4 { class Program { static void Main(string[] args) { string s1 = "a"; string s2 = "b"; Console.WriteLine("s1.CompareTo(s2):" + s1.CompareTo(s2)); string s3 = "foobar"; string s4 = "foofoo";//后面大 Console.WriteLine("s3.CompareTo(s4):" + s3.CompareTo(s4)); string s5 = "foobar"; string s6 = "foofoo"; int Val = String.Compare(s5, s6); Console.WriteLine("String.Compare(s5,s6):" + Val); s6 = "fooaar"; Val = String.Compare(s5, s6); Console.WriteLine("String.Compare(s5,s6):" + Val); s6 = "foobar"; Val = String.Compare(s5, s6); Console.WriteLine("String.Compare(s5,s6):" + Val); Console.ReadKey(); } } }