随笔 - 268  文章 - 0  评论 - 1028  阅读 - 160万

无废话即兴编程一篇

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

复制代码
代码
 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变量的人是不是也会和我一样会心一笑啊?)。不过上面的实现也是个人琢磨出来的,敝帚自珍,舍不得丢掉。不知道大家有没有更加快速和有技巧的实现方式?

posted on   JeffWong  阅读(639)  评论(4编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2010年3月 >
28 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10

I know how to make it works and I want to know how it works.
点击右上角即可分享
微信分享提示