认识String类别与String类别操作方式

在此系列文章中,将介绍一些撰写应用程序逻辑将常会使用到的类别,和这些类别提供的常用属性、方法。这回让我们来认识String类别与Sringr的操作方式。

 

在应用程序当中,常常需要依不同的情况处理字符串显示的样式。兴例来说,若应用程序需显示时间,你可能需要将DateTime型别的数据转换成字符串来输出;或者是将数值型别的资料,加上千分位与货币符号显示。

 

.NET FramewordSystem命名下包含一个String类别,它提供许多的属性和方法,以认你透过程序来操作String型别的数据。常用的字符串操作方法见下表:

方法

说明

Format

格式化输出的字符串

Trim

去除字符串前后的空白

TrimStart

去除字符串前方的空白

TrimEnd

去除字符串后方的空白

Compare

比较字符串大小

IndexOf

搜寻字符串中是否包含特定的字符

Replace

将某一个unicode字符取代成另一个unicod字符

Substring

萃取字符串的部份数据

ToUpper

将字符串的内容改成大写

ToLower

将字符全部改成小写

Split

将字符串切割后,放到数组这中

接着我们来以一个实例来探讨一些常用方法。

 

操作字符串的技术

使用主控台应用程序来展示使用操作字符串的方法。

namespace UseString

{

     using System;

     public class TestSting

     {

           [STAThread]

           public static void Main (string[] args)

           {

                Console.WriteLine("String.Format(/"int={0},string={1},datetime={2}/",10,/"Vivid/",DateTime.Now)");

                Console.WriteLine(String.Format("->int={0},string={1},datetime={2}",10,"Vivid",DateTime.Now));

                Console.WriteLine();

                Console.WriteLine("String.Format(/"Now ={0:yyyy-MM-dd}/",DateTime.Now)");

                Console.WriteLine(String.Format("->Now ={0:yyyy-MM-dd}",DateTime.Now));

                Console.WriteLine();

                Console.WriteLine("String.Format(/"Now = {0:D}/",DateTime.Now)");

                Console.WriteLine(String.Format("->Now = {0:D}",DateTime.Now));

                Console.WriteLine();

                Console.WriteLine("String.Format(/"My Number={0:000000.00}/",1000.00)");

                Console.WriteLine(String.Format("->My Number={0:000000.00}",1000.00));

                Console.WriteLine();

                Console.WriteLine("String.Format(/"My Number={0:#######.00}/",1000.00)");

                Console.WriteLine(String.Format("->My Number={0:#######.00}",1000.136));

                Console.WriteLine();

                Console.WriteLine("String.Format(/"My Number={0:C}/",1000.00)");

                Console.WriteLine(String.Format("->My Number={0:C}",1000.00));

                Console.WriteLine();

                Console.WriteLine("String.Format(/"My Number={0:C3}/",1000.00)");

                Console.WriteLine(String.Format("->My Number={0:C3}",1000.00));

                Console.WriteLine();

                Console.WriteLine("String.Format(/"My Number={0:N3}/",1000.00)");

                Console.WriteLine(String.Format("->My Number={0:N3}",1000.00));

                Console.WriteLine();

                Console.WriteLine("->String.Compare(/"Vivid/",/"VIVID/",false)={0}",String.Compare("Vivid","VIVID",false));

                Console.WriteLine("->String.Compare(/"Vivid/",/"VIVID/",true)={0}",String.Compare("Vivid","VIVID",true));

                Console.WriteLine();

                Console.WriteLine("string s=/"H/ello,V/ivid  /";");

                string s = "H/ello,V/ivid   ";

                Console.WriteLine("->s.IndexOf(/",/") = {0}",s.IndexOf(","));

                Console.WriteLine("->s.LastIndexOf(/"//") = {0}",s.LastIndexOf("/"));

                Console.WriteLine("->s.Replace(/" /",/"_/") = {0}",s.Replace(" ","_"));

                Console.WriteLine("->s.Replace(/"//",/",/") = {0}",s.Replace("/",","));

                Console.WriteLine("->s.Substring(3,4)= {0}",s.Substring(3,4));

                Console.WriteLine();

                Console.WriteLine("s = s.ToUpper()");

                s = s.ToUpper();

                Console.WriteLine("->s. = {0}",s);

                Console.WriteLine();

                Console.WriteLine("s = s.Replace(/"//",/",/"); ");

                s = s.Replace("/",",");

                Console.WriteLine("->s = {0}",s);

                Console.WriteLine();

                Console.WriteLine("string[] sa = s.Split(new char[] {','});");

                string[] sa = s.Split(new char[] {','});

                int nIndex = 0;

                Console.WriteLine("foreach(string o in sa)");

                foreach (string o in sa)

                {

                     Console.WriteLine("->{0} = {1}",nIndex++,o);

                }

           }

     }

}

UseString范例中撰写许多处理字符串的程序代码,分述于下。

 

使用Format方法

 

String类别的Format方法可以将字符串数据转换成不同的格式来显示。我们先来讲DateTime型别的格式化处理。

                Console.WriteLine("String.Format(/"int={0},string={1},datetime={2}/",10,/"Vivid/",DateTime.Now)");

                Console.WriteLine(String.Format("->int={0},string={1},datetime={2}",10,"Vivid",DateTime.Now));

Console.WriteLine程序中有三个内嵌在文字字符串中的参数字符串,分别为{0}{1}{2},用来格式化输出的文字符串。格式字符串中的参数是以0为基础开始计算的。{0}参数代表在跟随在结尾双引号之后的下一个自变量就是参数值出现的位置,也就是说[10]这个参数,在程序执行后,将会取代{0}所在的位置输出。依此类推,{1},代表第二个参数……

 

程序中叫用String.Format方法分别将int型别的数值10[Vivid]字符串,以及透过DateTim.Now属性取得的系统目前时间转换成字符串输出,执行的结果:

           String.Format("int={0},string={1},datetime={2}",10,"Vivid",DateTime.Now)

->int=10,string=Vivid,datetime= 2005/9/16 下午 02:26:29

若想要进一步格式化时间的显示,可以在参数字符串后以下面的语法义输出的格式:

   {参数索引值:参数格式}

如下面的程序代码,将日期的格式设定为yyyy-MM-dd

                Console.WriteLine("String.Format(/"Now ={0:yyyy-MM-dd}/",DateTime.Now)");

                Console.WriteLine(String.Format("->Now ={0:yyyy-MM-dd}",DateTime.Now));

这段程序输出的结果为:

          String.Format("Now ={0:yyyy-MM-dd}",DateTime.Now)

          ->Now = 2005-09-06

注意,执行结果会依据你计算机控制台的日期设定而有所不同。格化字符串输出常用的参数:

格式化字符

说明

d

显示短日期格式

D

显示长日期格式

t

显示短时间格式

T

显示长时间格式

f

显示长日期和短时间组合的格式,以空白分隔

F

显示长日期和长时间组合的格式

g

显示短日期和短时间组合的格式,以空白分隔

G

显示短日期和长时间组合的格式,以空白分隔

Mm

显示月份

Yy

显示年份

 

若要以长日期格式显示,可以使用D格式化字符:

                Console.WriteLine("String.Format(/"Now = {0:D}/",DateTime.Now)");

                Console.WriteLine(String.Format("->Now = {0:D}",DateTime.Now));

这段程序执行的结果为,注意,执行结果会依据计算机的日期设定而有所不同:

          String.Format("Now = {0:D}",DateTime.Now)

          ->Now = 2005 9 16

下面的程序片段展示将数值格式化下成小数以后两位,整数为6位数,不足补0:

                Console.WriteLine("String.Format(/"My Number={0:000000.00}/",1000.00)");

                Console.WriteLine(String.Format("->My Number={0:000000.00}",1000.00));

这段程序输出的结果为:

          String.Format("My Number = {0:000000.00}",1000.00)

         ->My Number = 001000.00

注意,执行结果会依据计算机的设定而有所不同,若数之的数值不补0,可以将格式化字符[0]改用[#]号取代,其余相关的数值常用格式化字符见下表:

数值格式化字符

说明

Cc

货币格式

Dd

科学符号格式

Ff

符点数

Gg

通用的数值格式

Nn

数值格式

Rr

双向格式,确保数值换成字符串后,再转换成数值能得到与转换前相同的值

Xx

十六进制表示

Compare方法

若要比较两个字符串的大小,可以使用String类别的Compare方法。举例来说,范例中使用:

                Console.WriteLine("->String.Compare(/"Vivid/",/"VIVID/",false)={0}",String.Compare("Vivid","VIVID",false));

程序中Compare方法传入三个参数:第一个参数代表要比较的第一个字符串;第二个参数是要比较的第二个字符串;第三个参数代表字符串比较时要将大小写视为相同或不同。若为true,代表忽略大小写;false代表不忽略大小写。

回传值

代表含意

小于0的值

第一个字符串小于第二个字符串

0

两个字符串相等

大于0

第一个字符串大于第二个字符串

 

 

IndexOfLastIndexOf方法

 

如果想要搜索字符串是否包含特定的字符,可以使用IndexOf方法。这个方法将会回伟特定字符的索引值,如想要找寻[H/ello,V/ivid   ]字符串中,第一次出现[]符号的索引可以使用:

                Console.WriteLine("string s=/"H/ello,V/ivid  /";");

                string s = "H/ello,V/ivid   ";

                Console.WriteLine("->s.IndexOf(/",/") = {0}",s.IndexOf(","));

得到结果为:

        string s = "H/ello,V/ivid   ";

           ->s.IndexOf(",") = 6

若找不到特定的字符,将回传-1

 

若欲寻找的字符在字符串中重复出现多次,可以使用LastIndexOf方法找出最后一次出现的索引值,如欲找出[H/ello,V/ivid   ]字符串最后一次出现[/]符号的索引值可以使用:

                Console.WriteLine("->s.LastIndexOf(/"//") = {0}",s.LastIndexOf("/"));

得到的结果为:

       ->s.LastIndexOf("/") = 8

 

Replace方法

Replace方法可以用来将某一个Unicode字符取代成另一个unicode字符。查看上面代码的结果。

 

Substring方法

你可以使用Substring萃取字符串部分数据。如想要萃取[H/ello,V/ivid   ]字符串中的[llo,]4个这元,可以使用:

                Console.WriteLine("->s.Substring(3,4)= {0}",s.Substring(3,4));

 

ToUpperToLower方法

ToUpper方法可以转字符串的内容改成大写;而ToLower则用来将字符全部改成小写。

 

Split方法

如果想要以[,]区隔,分别萃取出[Miles][vivid][Cherry]字符串然后将这三个字符串放到一个一维数组中,可以使用String类别的Split方法。举例来说,范例中的程序代码片段叫用Split方法将字符串s,[H,ello,V,ivid   ]按逗号切割后,分别放到string型别的数组中:

                Console.WriteLine("string[] sa = s.Split(new char[] {','});");

                string[] sa = s.Split(new char[] {','});

                int nIndex = 0;

                Console.WriteLine("foreach(string o in sa)");

                foreach (string o in sa)

                {

                     Console.WriteLine("->{0} = {1}",nIndex++,o);

                }

Split方法可以传入一个char型别的数组,你可以在这个数组指明切割字符串的Unicode办识字符,范例为[]号,你也可以使用不同的符号。程序执行后,数组的第一个元素内容将为[H],第二个元素为[ELLO],依此类推,程序执行的结果为:

      String[] sa = s.Split(new char[]{', '});

            foreach (string o in sa)

            ->0 = H

            ->1 = ELLO

            ->2 = V

            ->3 = IVID
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值