无废话即兴编程一篇

实现“去掉字符串里的特定字符,并返回不包含该特定字符的一个新字符串”。Code is cheap,代码如下:

ExpandedBlockStart.gif 代码
  class  Program
    {
        
static   void  Main( string [] args)
        {
            
string  strTest  =   " -abc-d--AB-CD " ;
            
string  result  =  GetFormatString(strTest,  ' - ' ); // 按照-分割
            Console.WriteLine(result);

            strTest 
=   " yjeffywongy " ;
            result 
=  GetFormatString(strTest,  ' y ' ); // 按照y分割
            Console.WriteLine(result);

            strTest 
=   null ; // 输入为空
            result  =  GetFormatString(strTest,  ' - ' );
            Console.WriteLine(result);

            Console.ReadKey();
        }

        
///   <summary>
        
///  输入字符串,返回不包含特定分割字符的字符串
        
///   </summary>
        
///   <param name="strInput"></param>
        
///   <param name="splitChar"></param>
        
///   <returns></returns>
         public   static   string  GetFormatString( string  strInput,  char  splitChar)
        {
            
if  ( string .ReferenceEquals(strInput,  null ))
            {
                
// return null;
                 throw   new  Exception( " Input string is null. " );
            }
            
if  (strInput.IndexOf(splitChar)  ==   - 1 )
            {
                
return  strInput;
            }
            
char [] input  =  strInput.ToCharArray();
            
char [] result  =   new   char [input.Length  -   1 ];
            
int  currentPos  =   0 ;
            
bool  isGetNext  =   false ;
            
for  ( int  i  =   0 ; i  <  input.Length; i ++ )
            {
                
char  c  =  input[i];
                
if  (c  ==  splitChar)
                {
                    isGetNext 
=   true ;
                }
                
else   if  (isGetNext)
                {
                    result[currentPos
++ =  c;
                    isGetNext 
=   false ;
                }
                
else
                {
                    result[currentPos
++ =  c;
                }
            }
            
return   new  String(result,  0 , currentPos);
        }
    }

 最后还是要废话几句。本来这个功能就很简单,为什么还要记下来呢?因为第一次实现这个功能的时候,我是用string的split函数拆分成字符串数组然后再拼接完成的。您看到有什么不是很合理的地方了吗?没错,在函数里将string类型的变量加来加去的犯了string对象应用上的一个大忌(为什么string对象的变量加来加去就是大忌呢?不用我说了吧,因为这里是博客园)。你可能会说,stringbuilder对象已经有很不错的替代字符串拼接的方法,这个我当然知道(经常使用sb变量的人是不是也会和我一样会心一笑啊?)。不过上面的实现也是个人琢磨出来的,敝帚自珍,舍不得丢掉。不知道大家有没有更加快速和有技巧的实现方式?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值