C#字符串⽐较⽅法
⽤C#⽐较字符串有多种⽅法,如:
1. string.Compare(x,y);
2. string.Equals(x,y) ;
如果要不区分⼤⼩写进⾏⽐较,则对应为:
string.Compare(x,y);
string.Equals(x,y);
注:string.Compare⽐较结果的含义:
值含义
⼩于零x ⼩于 y。或 x 为空引⽤(在 Visual Basic 中为 Nothing)。
零x 等于 y。
⼤于零x ⼤于 y。或 y 为空引⽤(在 Visual Basic 中为 Nothing)。
string.Equals⽐较结果的含义为:
值含义
true x 等于 y。
false x 不等 y。
其它常⽤字符串操作:
1、从字符串中提取⼦串
StringBuilder 类没有⽀持⼦串的⽅法,因此必须⽤String类来提取。
string mystring="My name is ynn.";
//Displays "name is ynn."
Console.WriteLine(mystring.Substring( 3 ));
/
/Displays "ynn"
Console.WriteLine(mystring.Substring( 11,3 ));
2、⽐较字符串
String 类有四种⽅法:Compare( )、CompareTo( )、CompareOrdinal( )、Equals( )。
Compare( )⽅法是CompareTo( )⽅法的静态版本。只要使⽤“=”运算符,就会调⽤Equals( )⽅法,的以Equals( )⽅法与“=”是等价的。CompareOrdinal( )⽅法对两个字符串⽐较不考本地语⾔与⽂件。
⽰例:
int result;
bool bresult;
s1="aaaa";
s2="bbbb";
//Compare( )method
//result值为“0”表⽰等,⼩于零表⽰ s1 < s2,⼤于零表⽰ s1 > s2
result=String.Compare(s1,s2);
result=s1.CompareTo( s2 );
result=String.CompareOrdinal(s1,s2);
bresult=s1.Equals( s2 );
bresult=String.Equals( s1,s2 );
⼀个例外情况是,两个字符串都是内置的,并相等,静态⽅法要快得多。
3、字符串格式化
3.1 格式化数字
格式字符说明和关联属性
c、C      货币格式。
d、D      ⼗进制格式。
e、E      科学计数(指数)格式。
f、F      固定点格式。
g、G      常规格式。
n、N      数字格式。
r、R      往返格式,确保将已转换成字符串的数字转换回数字时具有与原数字相同的值。
x、X      ⼗六进制格式。
double val=Math.PI;
Console.WriteLine(val.ToString( ));  //displays 3.14159265358979
Console.WriteLine(val.ToString("E"));//displays 3.141593E+000
字符串截取不改变原字符串Console.WriteLine(val.ToString("F3");//displays 3.142
int val=65535;
Console.WriteLine(val.ToString("x"));  //displays ffff
Console.WriteLine(val.ToString("X"));  //displays FFFF
Single val=0.123F;
Console.WriteLine(val.ToString("p"));  //displays 12.30 %
Console.WriteLine(val.ToString("p1"));  //displays 12.3 %
默认格式化会在数字和百分号之间放⼊⼀个空格。定制⽅法如下:
其中NumberFormatInfo类是System.Globalization命名空间的⼀个成员,因此该命名空间必须导⼊到程序中。
Single val=0.123F;
object myobj=NumberFormatInfo.CurrentInfo.Clone( ) as NumberFormatInfo;
NumberFormatInfo myformat=myobj as NumberFormatInfo;
myformat.PercentPositivePattern=1;
Console.WriteLine(val.ToString("p",myformat)); //displays 12.30%;
Console.WriteLine(val.ToString("p1",myformat)); //displays 12.3%;
格式化具有很⼤的灵活性。下⾯的例⼦演⽰⼀个没有意义的货币结构:
double val=1234567.89;
int [] groupsize={2,1,3};
object myobj=NumberFormatInfo.CurrentInfo.Clone( );
NumberFormatInfo mycurrency=myobj as NumberFormatInfo;
mycurrency.CurrencySymbol="#"; //符号
mycurrency.CurrencyDecimalSeparator=":"; //⼩数点
mycurrency.CurrencyGroupSeparator="_";  //分隔符
mycurrency.CurrencyGroupSizes=groupsize;
// 输出 #1_234_5_67:89
Console.WriteLine(val.ToString("C",mycurrency));
3.2 格式化⽇期输出形式取决于⽤户计算机的⽂化设置。
using System;
using System.Globalization;
public class MainClass
{
  public static void Main(string[] args)
  {
DateTime dt = DateTime.Now;
String[] format = {"d","D","f","F","g","G","m","r","s","t", "T","u", "U","y","dddd, MMMM dd yyyy","ddd, MMM d \"'\"yy","dddd, MMMM dd","M/yy","dd-MM-yy",};
String date;
for (int i = 0; i < format.Length; i++)
{
date = dt.ToString(format[i], DateTimeFormatInfo.InvariantInfo);
Console.WriteLine(String.Concat(format[i], " :" , date));
}
}
}
d :07/11/2004    <=======输出
D :Sunday, 11 July 2004
f :Sunday, 11 July 2004 10:52
F :Sunday, 11 July 2004 10:52:36
g :07/11/2004 10:52
G :07/11/2004 10:52:36
m :July 11
r :Sun, 11 Jul 2004 10:52:36 GMT
s :2004-07-11T10:52:36
t :10:52
T :10:52:36
u :2004-07-11 10:52:36Z
U :Sunday, 11 July 2004 02:52:36
y :2004 July
dddd, MMMM dd yyyy :Sunday, July 11 2004
ddd, MMM d "'"yy :Sun, Jul 11 '04
dddd, MMMM dd :Sunday, July 11
M/yy :7/04
dd-MM-yy :11-07-04
3.3 格式化枚举enum classmen
{
ynn=1,
yly=2,
css=3,
C++=4
}
获取枚举字符串信息如下:
classmen myclassmen=classmen.yly;
Console.WriteLine(myclassmen.ToString( ));  //displays yly Console.WriteLine(myclassmen.ToString("d")); //displays 2从系统枚举中获取⽂本⼈信息如下:
DayOfWeek day=DayOfWeek.Friday;
//displays "Day is Friday"
Console.WriteLine(String.Format("Day is {0:G}",day));
格式化字符串“ G ”把枚举显⽰为⼀个字符串。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。