关于字符串的使用

字符串,最初在C中是指一个char数组。在.NET和Java,语言本身内置String的类型,String一个不可变得类型,每次修改,都返回新的实例。以下我讨论关于String类型的一些常见用法。

1、判断是否空字符串

None.gif // 判断是否为null,或者长度是否为0
None.gif
if  (str  ==   null   ||  str.Length  ==   0 )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
//do something dot.gif
ExpandedBlockEnd.gif
}

None.gif // 判断是否为null,并且长度是否为0
None.gif
if  (str  !=   null   &&  str.Length  !=   0 )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
//do something dot.gif
ExpandedBlockEnd.gif
}

   String trimedStr;
None.gif // 判断是否为null,并且Trim之后长度是否为0
None.gif
if  (str  !=   null   &&  (trimedStr  =  str.trim()).Length  !=   0 )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
//use trimedStr
InBlock.gif    
//do something dot.gif
ExpandedBlockEnd.gif
}

None.gif

None.gif // 判断是否为null,并且trim之后长度是否为0
None.gif
if  (str  !=   null   &&  str.Trim().Length  !=   0 )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    String trimedStr 
= str.Trim();
InBlock.gif    
//do something dot.gif
ExpandedBlockEnd.gif
}

2、优化长字符串处理
 String一个不可变得类型,每次修改,都返回新的实例。在C#中使用StringBuilder,在Java中使用StringBuffer。
 例如:

None.gif StringBuilder strBuilder  =   new  StringBuilder();
None.gifstrBuilder.Append(
" aaa " );
None.gifstrBuilder.Append(
" bbb " );
None.gifString str 
=  strBuilder.ToString();


3、重载ToString方法
 当你一个大对象,包括很对子对象,需要每个子ToString然后相加,产生一个大字符串,此时你需要重载ToString()方法,但是这样的效率比较低。一种可替代的方式为,你提供一个额外的Output方法。例如:

None.gif public   void  Output(StringBuilder strBuilder)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif   
//do something dot.gif
ExpandedBlockEnd.gif
}

None.gif 
None.gif
public   override  String ToString()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif   StringBuilder strBuilder 
= new StringBuilder();
InBlock.gif   Output(strBuilder);
InBlock.gif   
return strBuilder.ToString();
ExpandedBlockEnd.gif}


总结
 其实这些都是很简单的技巧,理应该每个人都掌握,但是以前参加代码评审时,发现很多人还是犯错了,有个项目某个人使用了一种错误的方式,然后在整个项目组内推广,结果是整个项目组都使用错误了。

每次代码评审都会发现很多可笑的事情 :-)

转载于:https://www.cnblogs.com/jobs/archive/2004/07/31/28967.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值