首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 认证考试-> 全国等级考试
C#字符串的使用笔记-.NET教程,C#语言
作者:网友供稿 点击:368
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
字符串的使用


--------------------------------------------------------------------------------
一、标记
标记(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



字符串操作



--------------------------------------------------------------------------------

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.percentpositivepattern=1;
console.writeline(val.tostring("p",myformat)); //displays 12.30%;
console.writeline(val.tostring("p1",myformat)); //displays 12.3%;
格式化具有很大的灵活性。下面的例子演示一个没有意义的货币结构:
double val=1234567.89;
int [] groupsize={2,1,3};
object myobj=numberformatinfo.currentinfo.clone( );
numberformatinfo mycurrency=myobj as numberformatinfo;
mycurrency.currencysymbol="#"; //符号
mycurrency.currencydecimalseparator=":"; //小数点
mycurrency.currencygroupseparator="_"; //分隔符
mycurrency.currencygroupsizes=groupsize;
// 输出 #1_234_5_67:89
console.writeline(val.tostring("c",mycurrency));


3.2 格式化日期
输出形式取决于用户计算机的文化设置。
using system;
using system.globalization;
public class mainclass
{
  public static void main(string[] args)
  {
datetime dt = datetime.now;
string[] format = {"d","d","f","f","g","g","m","r","s","t", "t","u", "u","y","dddd, mmmm dd yyyy","ddd, mmm d \"\"yy","dddd, mmmm dd","m/yy","dd-mm-yy",};
string date;
for (int i = 0; i < format.length; i++)
{
date = dt.tostring(format[i], datetimeformatinfo.invariantinfo);
console.writeline(string.concat(format[i], " :" , date));
}
}
}
d :07/11/2004 <=======输出
d :sunday, 11 july 2004
f :sunday, 11 july 2004 10:52
f :sunday, 11 july 2004 10:52:36
g :07/11/2004 10:52
g :07/11/2004 10:52:36
m :july 11
r :sun, 11 jul 2004 10:52:36 gmt
s :2004-07-11t10:52:36
t :10:52
t :10:52:36
u :2004-07-11 10:52:36z
u :sunday, 11 july 2004 02:52:36
y :2004 july
dddd, mmmm dd yyyy :sunday, july 11 2004
ddd, mmm d ""yy :sun, jul 11 04
dddd, mmmm dd :sunday, july 11
m/yy :7/04
dd-mm-yy :11-07-04

3.3 格式化枚举
enum classmen
{
ynn=1,
yly=2,
css=3,
c++=4
}
获取枚举字符串信息如下:
classmen myclassmen=classmen.yly;
console.writeline(myclassmen.tostring( )); //displays yly
console.writeline(myclassmen.tostring("d")); //displays 2
从系统枚举中获取文本人信息如下:
dayofweek day=dayofweek.friday;
//displays "day is friday"
console.writeline(string.format("day is {0:g}",day));
格式化字符串“ g ”把枚举显示为一个字符串。




stringbuilder 类学习笔记
  string类的不可改变性使它更像一个值类型而不是一个引用类型。其副作用是每次执行字符操作时,都会创建一个新的string对象。stringbuilder 类解决了对字符串进行重复修改的过程中创建大量对象的问题。

stringbuilder 类的一些属性与方法



--------------------------------------------------------------------------------


length 属性并不是只读的。
stringbuilder sb=new stringbuilder("i live the language");
console.writeline(sb.tostring( ));
sb.length = 6;
//displays "i live"
console.writeline(sb.tostring( ));


capacity 属性
描述:当前为实例分配的字符数量。默认容量是16,如果将一个字符串作为参数提供给构造函数,容量以最接近 2 的幂的值。

maxcapacity 属性
描述:这个实例中可以被分配的字符最大数量。

append( ) 方法
描述:追加给定值的字符串表示。
stringbuilder sb=new stringbuilder( );
console.writeline( sb.capacity+"\t"+sb.length );
sb.append ( a , 17 )
console.writeline( sb.capacity+"\t"+sb.length );
16 0 <== 输出
32 17

ensurecapacity( int capacity ) 方法
描述:如果当前容量小于指定容量,内存分配会增加内存空间以达到指定容量。

replace( char oldchar,char newchar ) 方法
描述:用newchar替换oldchar。

replace( string oldstring,string newstring ) 方法
描述:用newstring替换oldstring。

replace( char oldchar,char newchar,int startpos,int count ) 方法
描述:从startpos到count-1之间用newchar替换oldchar。

replace( string oldstring,string newstring,int startpos,int count ) 方法
描述:从startpos到count-1之间用newstring替换oldstring。

tostring( ) 方法
stringbuilder sb=new stringbuilder( "i live this game" );
string s1=sb.tostring( ); //displays "i live this game"
string s2=sb.tostring(3,4); //displays "live"
在这里第二个tostring( )方法调用了string类的substring( )方法
public string tostring( int startindex,int length )
{
return m_stringvalue.substring( startindex,length );
}




string 类学习笔记
一、string 类的常用公共成员



--------------------------------------------------------------------------------


compare(string s1,string s2) 静态方法
功能:区分大小写比较。


compare(string s1,string s2,bool ignorecase) 静态方法
功能:ignorecase为true,不区分大小写比较。

compareto(string s) 实例方法
功能:对给定字符串与实例字符串执行一次区分大小写与文化信息比较。

copy(string s) 静态方法
功能:返回一个与给定字符串同值的新的字符串。

copyto(int surceindex,char[ ] destination,int destindex,int count)
实例方法功能:此实例中的指定位置复制到 unicode 字符数组中的指定位置。
参数:
sourceindex:此实例中的字符位置。
destination :unicode 字符的数组。
destindex :destination 中的数组元素。
count:此实例中要复制到 destination 的字符数。
例程:
using system;
public class copytotest {
public static void main() {
string strsource = "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 = "a different string";
strsource.copyto ( 2, destination, 3, 9 );
console.writeline( destination ); }
}
输出:
the initial array
the changed array
thedifferentarray

endswith(string s)
功能:如果实例字符串是以给定的字符串结束,就返回true。

equals(string s)
功能:如果实例字符串与给定的对象具有相同的值,就返回true。

format(iformatprovider provider,string format,paramarray args)
功能:format 的一个副本,其中格式项已替换为 args 中相应 object 实例的 string 等效项。
参数
provider : 一个 iformatprovider,它提供区域性特定的格式设置信息。
format : 包含零个或多个格式项。
args :包含零个或多个要格式化的对象的 object 数组。
例如:
string myname = "fred";
string.format("name = {0}, hours = {1:hh}", myname, datetime.now);
固定文本是“name =”和“, hours =”,格式项是“{0}”和“{1:hh}”,值为 myname 和 datetime.now。

replace(string oldstring,string newstring)
功能:在实例字符串中用newstring替换所有oldstring。


split(char[] separator,int count)
参数
separator :分隔此实例中子字符串的 unicode 字符数组、不包含分隔符的空数组或空引用。
count :要返回的最大数组元素数。
例如:
string delimstr = " ,.:";
char [] delimiter = delimstr.tochararray();
string words = "one two,three:four.";
string [] split = null;
split = words.split(delimiter, 4);
foreach (string s in split)
{
console.writeline("-{0}-", s);
}
one <==输出
two
three
four.

substring(int startpos,int length)
功能:从指定位置开始返回一个指定长度的子串。

tostring( ) 功能:返回一个对实例字符的引用。
tostring(iformatprovider format)
功能:返回一个对实例字符串的引用。





正则表达式学习笔记(1)
一、system.text.regularexpression命名空间
1、 regex类可以用来创建正则表达式,还提供了许多方法。
如:regex.replace(string input,string pattern,string replacement);
-------regexoption枚举
ignorecase 忽略大小写。默认情况区分大小写
righttoleft 从右到左查找输入字符串。
none 不设定标志。
miltiline 指定^与$可以匹配行的开头和结尾,以及字符串的开头和结尾。
singleline 规定特殊字符“.”匹配任一字符。换行符除外。
例:regexoptions.ignorecase
regex.ismatch(mystring,"ywsm",regexoptions.ignorecase |regexoptions.righttoleft):
-------(两个主要的)类构造函数
regex(string pattern);
regex(string pattern , regexoption options);
例:匹配ywsm:
static void main(string[] args)
{ regex myregex=new regex("ywsm");
system.console.writeline(myregex.ismatch("the first three letters of "+"the alphabet are ywsm")); }
输出:true如需设置区分大小写可用
regex myregex=new regex("ywsm",regexoption.ignorecase);
-------ismatch( )方法
该方法可以测试字符串,看它是否匹配正则表达式的模式。如果发现了一次匹配,返回true,否则为false。ismatch( )有一个静态的重载方法,使用它时可以无需显式创建一个regex对象。
重载形式:
public bool regex.ismatch(string input );
public bool regex.ismatch(string input,int startat);
public static bool regex.ismatch(string input,string pattern);
public static bool regex.ismatch(string input,string pattern,regexoption options);
input: 指定了包含将检索的文本的字符串。
sartat: 指定了搜索的起始字符位置。
pttern: 指定将匹配的样式。
options: 匹配行为的选项。
例:string inputstring="welcome to the ywicc,ywsmxy!";
if ( regex.ismatch( inputstring,"ywicc",regexoptions.ignorecase) )
console.writeline("match found");
else
console.writeline(" no match found");
------replace( )方法
用指定的字符串代替一个匹配模式。
---基本方法有:
public static string regex.replace(string input,string pattern,string replacement);
public static string regex.replace(string input,string pattern,string replacement,regexoption options);
例:用"aaa"替换"bbb"的所有实例代码:
string inputstring="welcome to the aaa!";
inputstring=regex.replace(inputstring,"bbb","aaa");
console.writeline(inputstring);
----非静态方法,可以指定替换次数的最大值以及开始下标:
public string replace(string input,string replacement);
public string replace(string input,string replacement,int count);
public string replace(string input,string replacement,int count,int startat);
例:使用xxx替换456之后的123,最多替换两次,代码如下:
string inputstring="123,456,123,123,123,789,333";
regex regexp=new regex("123");
inputstring=regexp.replace(inputstring,"xxx",2,4)
console.writeline(inputstring);
输出:123,456,xxx,xxx,123,789,333
-------split( )方法
在每次发现匹配的位置拆分字符串。返回一个字符串数组。
using system;
using system.text;
using system.text.regularexpressions;
using system.windows.forms;
class mysplit
{
static void main(string[ ] args)
{
string inputstring="123,456,789,ads";
string[ ] splitresults;
splitresults=regex.split(inputstring,",");
stringbuilder resultsstring=new stringbuilder(32);
foreach(string stringelement in splitresults)
{
resultsstring.append(stringelement+"\n");
}
messagebox.show(resultsstring.tostring( ));
}
}

123 <==结果
456
789
ads

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·VisualC#中MDI窗体初步-.NET教程,C#语言
·2004年全国计算机等级考试二级vb全真上机试题解析
·全国计算机等级考试一级ms office考试(样题)
·java生成JPEG 图像文件-JSP教程,Java技巧及代码
·全国计算机等级考试二级access考试大纲
·全国计算机等级考试一级b考试大纲
·大文件上传研究-ASP教程,ASP应用
·全国计算机等级考试二级c语言考试大纲
·C#字符串的使用笔记-.NET教程,C#语言
·c#实现类似于SqlServer视图设计器的可浮动窗体-.NET教程,C#语言
最新文章
·利用c#远程存取access数据库_c#应用
·dreamweaver简单描述制作网页的基本步骤_dreamweaver教程
·fireworks制作波普网点画面特效_fireworks教程
·如何提高垃圾站点gg ad广告单元点击价格_网赚技巧
·谈百度联盟和google adsense广告的均衡优化_网赚技巧
·google adsense 广告功略之三定理_网赚技巧
·为什么网站要先做小众_站长心得
·针对地方门户网站运营推广的经验分析_站长心得
·如何做网站的搜索引擎优化?_站长心得
·如何正规的快速建立赚钱的网站_google推广
相关主题
  • C#字符串的使用笔记-.NET教程,C#语言
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭