c#语言学习 专题二 String

前记html

    msdn上前几个部分我就不说了吧!就从string开始提及!一个程序员的职业生涯不少时候都是在跟这个东西打交道!
git

内容程序员

    一,string和String
c#

    MSDN中对string的说明:post

    string is an alias for String in the .NET Framework。string是String的别名而已,string是c#中的类,String是Framework的类,C# string 映射为 Framework的 String。若是用string,编译器会把它编译成String,因此若是直接用String就可让编译器少作一点点工做。ui

    若是使用C#,建议使用string,比较符合规范 。 string始终表明 System.String(1.x) 或 ::System.String(2.0) ,String只有在前面有using System;的时候而且当前命名空间中没有名为String的类型(class、struct、delegate、enum)的时候才表明System.String。this

    string是c#中的类,String是.net Framework的类(在c# IDE中不会显示蓝色)spa

    c# string映射为.net Framework的String.net

    若是用string,编译器会把它编译成String,因此若是直接用String就可让编译器少作一点点工做指针

    若是使用c#,建议使用string,比较符合规范

    string始终表明 System.String(1.x) 或 ::System.String(2.0) ,String只有在前面有using System;的时候而且当前命名空间中没有名为String的类型(class、struct、delegate、enum)的时候才表明System.String

    string是关键字,String不是,也就是说string不能做为类、结构、枚举、字段、变量、方法、属性的名称,而String能够。

    以上摘自:http://www.cnblogs.com/albertly/archive/2008/11/18/1335823.html

    二,String.empty,null,""比较

    首先,要先对一个容易出错的地方提早作出说明。string.equals(string str),和”==“。==是指指针级别的,当数据类型为为原子类型时,能够用==比较是否相等,可是,非原子类型,如string时,==比较的的是对象的惟一标识。普通的对象使用==时,比较的是对象的惟一标识,即(object==object2)即便内容相同,结果也为false;可是,string的==已经被重载。

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

 

    namespace ConsoleTest

    {

        class Program

        {

            static string emstr = "wxw";

 

            static void Main(string[] args)

            {

            string str = "";

            string strempty = string.Empty;

            string strnull = null;

            if (str.Equals(strempty))

            {

                System.Console.WriteLine("\"\" equals empty!");

            }else

            {

                System.Console.WriteLine("\"\" not equals empty!");

            }

            //运行结果为:"" equals empty

            if (str.Equals(strnull))

            {

                System.Console.WriteLine("\"\" equals null!");

            }

            else

            {

                System.Console.WriteLine("\"\" not equals null!");

            }

            //运行结果:"" not equals null!

            //strnull.Equals(strempty);

 

            if (strempty.Equals(strnull))

            {

                System.Console.WriteLine("empty equals null!");

            }

            else

            {

                System.Console.WriteLine("empty equals null!");

            }

            //运行结果:empty equals null!

            if(strempty==strnull)

            {

                System.Console.WriteLine("empty equals null!");

            }

            else

            {

                System.Console.WriteLine("empty equals null!");

            }

 

            //运行结果:empty equals null

            if (strnull == strempty)

            {

                System.Console.WriteLine("empty equals null!");

            }

            else

            {

                System.Console.WriteLine("empty  not equals null!");

            }

            //运行结果:empty  not equals null!

            //缘由是因为,第一个参数是null类型对象,按照普通对象进行比较!

 

            if ("viwii" == "viwii")

            {

                System.Console.WriteLine("equal!");

            }

            else

            {

                System.Console.WriteLine("not equal!");

            }

            //运行结果:equal

            string strequal = "wxw";

            string strequal1 = "wxw";

            if (emstr == strequal1)

            {

                System.Console.WriteLine("equal!");

            }

            else

            {

                System.Console.WriteLine("not equal!");

            }

            //运行结果:equal!

            System.Console.ReadKey();

            }

        }

    }

    注意,一个可能为null的字符串不可使用equals方法,会报出异常:未将对象引用设置到对象实例!

    三,String和StringBuilder

        当作字符串链接时,可直接采用String+方法,可是当须要作大量字符串链接时,建议使用StringBuilder,从内存利用,效率等各个方面来见,StringBuilder都能高出多个数量级

    ,string经常使用方法

    详细的使用信息能够收索String!这里仅对个别方法进行说明。

     1> string.format  (如下偷懒了,摘自别人的博客,但忘记了出处,遗憾!)

C#格式化数值结果表

字符

说明

示例

输出

C 货币 string.Format("{0:C3}", 2) $2.000
D 十进制 string.Format("{0:D3}", 2) 002
E 科学计数法 1.20E+001 1.20E+001
G 常规 string.Format("{0:G}", 2) 2
N 用分号隔开的数字 string.Format("{0:N}", 250000) 250,000.00
X 十六进制 string.Format("{0:X000}", 12) C


string.Format("{0:000.000}", 12.2) 012.200

Strings

There really isn't any formatting within a strong, beyond it's alignment. Alignment works for any argument being printed in a String.Format call.

 

Sample Generates
String.Format("->{1,10}<-", "Hello"); -> Hello<-
String.Format("->{1,-10}<-", "Hello"); ->Hello <-

Numbers

Basic number formatting specifiers:

 

Specifier Type Format

Output 
(Passed 
Double 1.42)

Output 
(Passed 
Int -12400)

c Currency {0:c} $1.42 -$12,400
d Decimal (Whole number) {0:d} System.
FormatException
-12400
e Scientific {0:e} 1.420000e+000 -1.240000e+004
f Fixed point {0:f} 1.42 -12400.00
g General {0:g} 1.42 -12400
n Number with commas for thousands {0:n} 1.42 -12,400
r Round trippable {0:r} 1.42 System.
FormatException
x Hexadecimal {0:x4} System.
FormatException
cf90

Custom number formatting:

 

Specifier Type Example Output (Passed Double 1500.42) Note
Zero placeholder {0:00.0000} 1500.4200 Pads with zeroes.
# Digit placeholder {0:(#).##} (1500).42
. Decimal point {0:0.0} 1500.4
, Thousand separator {0:0,0} 1,500 Must be between two zeroes.
,. Number scaling {0:0,.} 2 Comma adjacent to Period scales by 1000.
% Percent {0:0%} 150042% Multiplies by 100, adds % sign.
e Exponent placeholder {0:00e+0} 15e+2 Many exponent formats available.
; Group separator see below  

The group separator is especially useful for formatting currency values which require that negative values be enclosed in parentheses. This currency formatting example at the bottom of this document makes it obvious:

Dates

Note that date formatting is especially dependant on the system's regional settings; the example strings here are from my local locale.

 

Specifier Type Example (Passed System.DateTime.Now)
d Short date 10/12/2002
D Long date December 10, 2002
t Short time 10:11 PM
T Long time 10:11:29 PM
f Full date & time December 10, 2002 10:11 PM
F Full date & time (long) December 10, 2002 10:11:29 PM
g Default date & time 10/12/2002 10:11 PM
G Default date & time (long) 10/12/2002 10:11:29 PM
M Month day pattern December 10
r RFC1123 date string Tue, 10 Dec 2002 22:11:29 GMT
s Sortable date string 2002-12-10T22:11:29
u Universal sortable, local time 2002-12-10 22:13:50Z
U Universal sortable, GMT December 11, 2002 3:13:50 AM
Y Year month pattern December, 2002

The 'U' specifier seems broken; that string certainly isn't sortable.

Custom date formatting:

 

Specifier Type Example Example Output
dd Day {0:dd} 10
ddd Day name {0:ddd} Tue
dddd Full day name {0:dddd} Tuesday
f, ff, ... Second fractions {0:fff} 932
gg, ... Era {0:gg} A.D.
hh 2 digit hour {0:hh} 10
HH 2 digit hour, 24hr format {0:HH} 22
mm Minute 00-59 {0:mm} 38
MM Month 01-12 {0:MM} 12
MMM Month abbreviation {0:MMM} Dec
MMMM Full month name {0:MMMM} December
ss Seconds 00-59 {0:ss} 46
tt AM or PM {0:tt} PM
yy Year, 2 digits {0:yy} 02
yyyy Year {0:yyyy} 2002
zz Timezone offset, 2 digits {0:zz} -05
zzz Full timezone offset {0:zzz} -05:00
: Separator {0:hh:mm:ss} 10:43:20
/ Separator {0:dd/MM/yyyy} 10/12/2002

Enumerations

 

Specifier Type
g Default (Flag names if available, otherwise decimal)
f Flags always
d Integer always
x Eight digit hex.

Some Useful Examples

String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);

This will output "$1,240.00" if passed 1243.50. It will output the same format but in parentheses if the number is negative, and will output the string "Zero" if the number is zero.

String.Format("{0:(###) ###-####}", 18005551212);

This will output "(800) 555-1212".

 

变量.ToString()

字符型转换 转为字符串  12345.ToString("n"); //生成 12,345.00  12345.ToString("C"); //生成 ¥12,345.00  12345.ToString("e"); //生成 1.234500e+004  12345.ToString("f4"); //生成 12345.0000  12345.ToString("x"); //生成 3039 (16进制)  12345.ToString("p"); //生成 1,234,500.00%

相关文章
相关标签/搜索