C#字符串的使用.docx

上传人:b****4 文档编号:12102106 上传时间:2023-04-17 格式:DOCX 页数:12 大小:21.12KB
下载 相关 举报
C#字符串的使用.docx_第1页
第1页 / 共12页
C#字符串的使用.docx_第2页
第2页 / 共12页
C#字符串的使用.docx_第3页
第3页 / 共12页
C#字符串的使用.docx_第4页
第4页 / 共12页
C#字符串的使用.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

C#字符串的使用.docx

《C#字符串的使用.docx》由会员分享,可在线阅读,更多相关《C#字符串的使用.docx(12页珍藏版)》请在冰豆网上搜索。

C#字符串的使用.docx

C#字符串的使用

字符串的使用

一、标记

标记(tokenizing)是从文本中提取具体内容的过程。

下面的代码从句子中提取单词,并把它们输出到控制台。

classmytokenizing

{

  staticvoidMain(string[]args)

  {

     stringmystring="Ilikethisfood,areyou?

";

     char[]separators={'',',','?

',':

','!

'};

     intstartpos=0;

     intendpos=0;

     do

     {

        endpos=mystring.IndexOfAny(separators,startpos);

        if(endpos==-1)endpos=mystring.Length;

        if(endpos!

=startpos)

             Console.WriteLine(mystring.Substring(startpos,(endpos-startpos)));

        startpos=(endpos+1);

     }while(startpos

  }

}

I   <==输出

like

this

food

are

you

二、颠倒字符串次序

classmyreverse

{

  staticvoidMain(string[]args)

  {

     stringmystring="你们好";

     char[]mychars=mystring.ToCharArray();

     Array.Reverse(mychars);

     Console.WriteLine(mystring);

     Console.WriteLine(mychars);

  }

}

任何继承于Array的类都能利用Reverse()方法为数组中的元素重新排序。

三、字符串的插入、删除和替换

示例文件test.txt为字符串的来源。

下面代码以Unicode格式读取文本。

确保文件保存为读取时的格式。

例如记事本允许将代码保存为Unicode:

aaaaaaaa,bbbbbbbb,cccccc

dddddddd,eeeeeeee,ffffff

gggggggg,hhhhhhhh,iiiiii

jjjjjjjj,kkkkkkkk,llllll

下面代码加载数据并处理数据的测试工具。

测试结果发送给控制台。

classmyprocessfile

{

  staticvoidMain(string[]args)

  {

     conststringmyName="test.txt";

     StreamreadLine;

     TextWirterwriteLine;

     StringBuildersb;

     readLine=File.OpenRead(myName);

     WriteLine=Console.Out;

     StreamReaderreadLineSReader=newStreamReader(readLine,Encoding.Unicode);

     readLineSReader.BaseStream.Seek(0,SeekOrigin.Begin);

     while(readLineSReader.Peek()>-1)

     {

        sb=newStringBuilder(readLineSReader.ReadLine());

        //插入字符串操作语句如:

sb.Append(",123");  

        Console.WriteLine(sb.ToString());

     }

  }

}

在结尾添加一列内容:

//displaysaaaaaaaa,bbbbbbbb,cccccc,xxxxx

//......

sb.Append(",xxxxx");

第一列可以使用下面的代码删除:

//displaysbbbbbbbb,cccccc

//......

sb.Remove(0,sb.ToString().IndexOf(',')+1);

替换分隔符:

//aaaaaaaa+bbbbbbbb+cccccc

sb.Replace(',','+');

添加行号(lineNumber已经在前面某处声明过为前提):

sb.Insert(0,lineNumber.ToString("000"));

lineNumber++;

//displays 

//000aaaaaaaa,bbbbbbbb,cccccc

//001dddddddd,eeeeeeee,ffffff

//002gggggggg,hhhhhhhh,iiiiii

//003jjjjjjjj,kkkkkkkk,llllll

字符串操作

1、从字符串中提取子串

StringBuilder类没有支持子串的方法,因此必须用String类来提取。

stringmystring="Mynameisynn.";

//Displays"nameisynn."

Console.WriteLine(mystring.Substring(3));

//Displays"ynn"

Console.WriteLine(mystring.Substring(11,3));

2、比较字符串

String类有四种方法:

Compare()、CompareTo()、CompareOrdinal()、Equals()。

Compare()方法是CompareTo()方法的静态版本。

只要使用“=”运算符,就会调用Equals()方法,的以Equals()方法与“=”是等价的。

CompareOrdinal()方法对两个字符串比较不考本地语言与文件。

示例:

intresult;

boolbresult;

s1="aaaa";

s2="bbbb";

//Compare()method

//result值为“0”表示等,小于零表示s1s2

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      十六进制格式。

 

doubleval=Math.PI;

Console.WriteLine(val.ToString()); //displays3.14159265358979

Console.WriteLine(val.ToString("E"));//displays3.141593E+000

Console.WriteLine(val.ToString("F3");//displays3.142

intval=65535;

Console.WriteLine(val.ToString("x")); //displaysffff

Console.WriteLine(val.ToString("X")); //displaysFFFF

Singleval=0.123F;

Console.WriteLine(val.ToString("p")); //displays12.30%

Console.WriteLine(val.ToString("p1")); //displays12.3%

默认格式化会在数字和百分号之间放入一个空格。

定制方法如下:

 

其中NumberFormatInfo类是System.Globalization命名空间的一个成员,因此该命名空间必须导入到程序中。

Singleval=0.123F;

objectmyobj=NumberFormatInfo.CurrentInfo.Clone()asNumberFormatInfo;

NumberFormatInfomyformat=myobjasNumberFormatInfo;

myformat.PercentPositivePattern=1;

Console.WriteLine(val.ToString("p",myformat));//displays12.30%;

Console.WriteLine(val.ToString("p1",myformat));//displays12.3%;

格式化具有很大的灵活性。

下面的例子演示一个没有意义的货币结构:

doubleval=1234567.89;

int[]groupsize={2,1,3};

objectmyobj=NumberFormatInfo.CurrentInfo.Clone();

NumberFormatInfomycurrency=myobjasNumberFormatInfo;

mycurrency.CurrencySymbol="#";//符号

mycurrency.CurrencyDecimalSeparator=":

";//小数点

mycurrency.CurrencyGroupSeparator="_"; //分隔符

mycurrency.CurrencyGroupSizes=groupsize;

//输出 #1_234_5_67:

89

Console.WriteLine(val.ToString("C",mycurrency));

3.2格式化日期

输出形式取决于用户计算机的文化设置。

usingSystem;

usingSystem.Globalization; 

publicclassMainClass 

  publicstaticvoidMain(string[]args)  

  {

       DateTimedt=DateTime.Now;

       String[]format={"d","D","f","F","g","G","m","r","s","t","T","u","U","y","dddd,MMMMddyyyy","ddd,MMMd\"'\"yy","dddd,MMMMdd","M/yy","dd-MM-yy",};

       Stringdate;

     for(inti=0;i

     {

        date=dt.ToString(format[i],DateTimeFormatInfo.InvariantInfo);

        Console.WriteLine(String.Concat(format[i],":

",date));

     }

    }

}

d:

07/11/2004   <=======输出

D:

Sunday,11July2004

f:

Sunday,11July200410:

52

F:

Sunday,11July200410:

52:

36

g:

07/11/200410:

52

G:

07/11/200410:

52:

36

m:

July11

r:

Sun,11Jul200410:

52:

36GMT

s:

2004-07-11T10:

52:

36

t:

10:

52

T:

10:

52:

36

u:

2004-07-1110:

52:

36Z

U:

Sunday,11July200402:

52:

36

y:

2004July

dddd,MMMMddyyyy:

Sunday,July112004

ddd,MMMd"'"yy:

Sun,Jul11'04

dddd,MMMMdd:

Sunday,July11

M/yy:

7/04

dd-MM-yy:

11-07-04

3.3格式化枚举

enumclassmen

{

 ynn=1,

 yly=2,

 css=3,

 C++=4

}

获取枚举字符串信息如下:

classmenmyclassmen=classmen.yly;

Console.WriteLine(myclassmen.ToString());  //displaysyly

Console.WriteLine(myclassmen.ToString("d"));//displays2

从系统枚举中获取文本人信息如下:

DayOfWeekday=DayOfWeek.Friday;

//displays"DayisFriday"

Console.WriteLine(String.Format("Dayis{0:

G}",day));

格式化字符串“G”把枚举显示为一个字符串。

StringBuilder类学习笔记

  String类的不可改变性使它更像一个值类型而不是一个引用类型。

其副作用是每次执行字符操作时,都会创建一个新的String对象。

StringBuilder类解决了对字符串进行重复修改的过程中创建大量对象的问题。

StringBuilder类的一些属性与方法

Length 属性并不是只读的。

StringBuildersb=newStringBuilder("Ilivethelanguage");

Console.WriteLine(sb.ToString());  

sb.Length=6;

//Displays"Ilive"

Console.WriteLine(sb.ToString());

Capacity 属性

描述:

当前为实例分配的字符数量。

默认容量是16,如果将一个字符串作为参数提供给构造函数,容量以最接近2的幂的值。

MaxCapacity 属性

描述:

这个实例中可以被分配的字符最大数量。

Append( ) 方法

描述:

追加给定值的字符串表示。

StringBuildersb=newStringBuilder();

Console.WriteLine(sb.Capacity+"\t"+sb.Length); 

sb.Append('a',17) 

Console.WriteLine(sb.Capacity+"\t"+sb.Length); 

16     0<==输出

32     17

EnsureCapacity(Intcapacity) 方法

描述:

如果当前容量小于指定容量,内存分配会增加内存空间以达到指定容量。

Replace(Charoldchar,Charnewchar) 方法

描述:

用newchar替换oldchar。

Replace(Stringoldstring,Stringnewstring) 方法

描述:

用newstring替换oldstring。

Replace(Charoldchar,Charnewchar,Int startpos,Intcount) 方法

描述:

从startpos到count-1之间用newchar替换oldchar。

Replace(Stringoldstring,Stringnewstring,Intstartpos,Intcount) 方法

描述:

从startpos到count-1之间用newstring替换oldstring。

ToString() 方法

StringBuildersb=newStringBuilder("Ilivethisgame");

Strings1=sb.ToString( );        //Displays"Ilivethisgame"

Strings2=sb.ToString(3,4);    //Displays"live"

在这里第二个ToString()方法调用了String类的Substring()方法

publicStringToString(intstartIndex,intlength) 

{

  returnm_StringValue.Substring(startIndex,length);

}

String类学习笔记

一、String类的常用公共成员

Compare(Strings1,Strings2) 静态方法

功能:

区分大小写比较。

Compare(Strings1,Strings2,BoolignoreCase) 静态方法

功能:

ignoreCase为True,不区分大小写比较。

CompareTo(Strings)     实例方法

功能:

对给定字符串与实例字符串执行一次区分大小写与文化信息比较。

Copy(Strings)           静态方法

功能:

返回一个与给定字符串同值的新的字符串。

CopyTo(IntsurceIndex,char[]destination,IntdestIndex,Intcount)

实例方法功能:

此实例中的指定位置复制到Unicode字符数组中的指定位置。

参数:

sourceIndex:

此实例中的字符位置。

 

destination:

Unicode字符的数组。

 

destIndex:

destination中的数组元素。

 

count:

此实例中要复制到destination的字符数。

 

例程:

usingSystem;

publicclassCopyToTest{

   publicstaticvoidMain(){

   stringstrSource="changed";

   char[]destination={'T','h','e','','i','n','i','t','i','a','l','','a','r','r','a','y'};

   Console.WriteLine(destination);

    strSource.CopyTo(0,destination,4,strSource.Length);

   Console.WriteLine(destination);

   strSource="Adifferentstring";

    strSource.CopyTo(2,destination,3,9);

   Console.WriteLine(destination); } 

  }

输出:

Theinitialarray

Thechangedarray

Thedifferentarray

EndsWith(Strings)

功能:

如果实例字符串是以给定的字符串结束,就返回True。

Equals(Strings)

功能:

如果实例字符串与给定的对象具有相同的值,就返回True。

Format(IFormatProviderprovider,Stringformat,ParamArrayargs)

功能:

format的一个副本,其中格式项已替换为args中相应Object实例的String等效项。

参数

provider:

一个IFormatProvider,它提供区域性特定的格式设置信息。

 

format:

包含零个或多个格式项。

 

args:

包含零个或多个要格式化的对象的Object数组。

 

例如:

stringmyName="Fred";

String.Format("Name={0},hours={1:

hh}",myName,DateTime.Now);

固定文本是“Name=”和“,hours=”,格式项是“{0}”和“{1:

hh}”,值为myName和DateTime.Now。

Replace(Stringoldstring,Stringnewstring)

功能:

在实例字符串中用newstring替换所有oldstring。

Split(char[]separator,intcount)

参数

separator:

分隔此实例中子字符串的Unicode字符数组、不包含分隔符的空数组或空引用。

 

count:

要返回的最大数组元素数。

 

例如:

stringdelimStr=",.:

";

char[]delimiter=delimStr.ToCharArray();

stringwords="onetwo,three:

four.";

string[]split=null;

split=words.Split(delimiter,4);

foreach(stringsinsplit)

{

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

}

one <==输出

two

three

four.

SubString(IntstartPos,Intlength)

功能:

从指定位置开始返回一个指定长度的子串。

ToString() 功能:

返回一个对实例字符的引用。

ToString(IFormatProviderformat)

功能:

返回一个对实例字符串的引用。

正则表达式学习笔记

(1)

一、System.Text.RegularExpression命名空间

1、 Regex类可以用来创建正则表达式,还提供了许多方法。

如:

Regex.Replace(stringinput,Stringpattern,stringreplacement);

-------RegexOption枚举

IgnoreCase 忽略大小写。

默认情况区分大小写

RightToLeft 从右到左查找输入字符串。

None 不设定标志。

MiltiLine 指定^与$可以匹配行的开

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1