C#字符串的使用

 

C#字符串的使用


一、标记
标记(tokenizing)是从文本中提取具体内容的过程。
下面的代码从句子中提取单词,并把它们输出到控制台。
class mytokenizing
{
   static void Main(string[ ] args)
   {
      string mystring="I like this food,are you?";
      char[] separators={' ',',','?',':','!'};
      int startpos=0;
      int endpos=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<mystring.Length);
   }
}
I    <== 输出
like
this
food
are
you

 

二、颠倒字符串次序
class myreverse
{
   static void Main(string [] args)
   {
      string mystring="你们好";
      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

下面代码加载数据并处理数据的测试工具。测试结果发送给控制台。
class myprocessfile
{
   static void Main(string [] args)
   {
      const string myName="test.txt";
      Stream readLine;
      TextWirter writeLine;
      StringBuilder sb;
      readLine=File.OpenRead(myName);
      WriteLine=Console.Out;
      StreamReader readLineSReader=new StreamReader(readLine,Encoding.Unicode);
      readLineSReader.BaseStream.Seek(0,SeekOrigin.Begin);
      while(readLineSReader.Peek()>-1)
      {
         sb=new StringBuilder(readLineSReader.ReadLine());
         //插入字符串操作语句如:sb.Append(",123"); 
         Console.WriteLine(sb.ToString());
      }
   }
}

在结尾添加一列内容:
//displays aaaaaaaa,bbbbbbbb,cccccc,xxxxx
//......
sb.Append(",xxxxx");

第一列可以使用下面的代码删除:
//displays bbbbbbbb,cccccc
//......
sb.Remove(0,sb.ToString().IndexOf(',')+1);

替换分隔符:
//aaaaaaaa+bbbbbbbb+cccccc
sb.Replace(',','+');

添加行号(lineNumber已经在前面某处声明过为前提):
sb.Insert(0,lineNumber.ToString("000 "));
lineNumber++;

//displays
//000 aaaaaaaa,bbbbbbbb,cccccc
//001 dddddddd,eeeeeeee,ffffff
//002 gggggggg,hhhhhhhh,iiiiii
//003 jjjjjjjj,kkkkkkkk,llllll

13:16 | 评论 (0)

2004年7月11日 #

字符串操作学习笔记

字符串操作


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.PercentPositi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值