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%

相關文章
相關標籤/搜索