字符串拼接新技能

本文探讨了在编程中使用不同方法进行字符串拼接的优缺点,包括使用+、string.Format、StringBuilder等,并对比了它们在性能和易用性上的差异。通过实例分析,展示了如何更有效地进行字符串拼接,以及在实际应用中如何避免常见的错误和优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于这个问题先来看一段代码:

String strPath = sImagePath + "\\" + sIP.ToString() + "\\高清图\\" + Convert.ToString(dt.Year) +
                   Convert.ToString(dt.Month) +
                  Convert.ToString(dt.Day);
            Directory.CreateDirectory(strPath);
            strSpeFile = strPath + "\\" + strTime + "(" + sPlate.ToString() + ").jpg";
  
            //将抓拍图片存储到队列中
            queueImg.Enqueue(strSpeFile);
            log.Error("车牌识别图片路径:" + strSpeFile);
  
            strPath = sImagePath + "\\" + sIP.ToString() + "\\车牌图\\" + Convert.ToString(dt.Year) +
                  Convert.ToString(dt.Month) +
                  Convert.ToString(dt.Day);
            Directory.CreateDirectory(strPath);
            strPlateFile = strPath + "\\" + strTime + "(" + sPlate.ToString() + ").jpg";
  
            strPath = sImagePath + "\\" + sIP.ToString() + "\\二值化图\\" + Convert.ToString(dt.Year) +
                   Convert.ToString(dt.Month) +
                  Convert.ToString(dt.Day);
            Directory.CreateDirectory(strPath);
            strTwoFile = strPath + "\\" + strTime + "(" + sPlate.ToString() + ").bin";

使用“+”来拼接字符串,应该是最常见的做法,很直观,但也是最低级的做法,说到优化,大家很容易就想到了  string.Format、StringBuilder等方法或类来处理。

比如用  string.Format来处理一段代码,如下

String strPath =string.Format("{0}\\{1}\\高清图\\{2}{3}{4}",sImagePath,sIP.ToString(), Convert.ToString(dt.Year),
 Convert.ToString(dt.Month),Convert.ToString(dt.Day));

看起来不错,节俭多了,性能上来说也有所提高。然后有个人突然告诉你,你的参数顺序写错了,然后你又急急忙忙一个一个的去对。。

之后你又换了个方法,用StringBuilder,代码如下

StringBuilder str= new StringBuilder();
            str.Append(sImagePath);
            str.Append("\\");
            str.Append(sIP.ToString());
            str.Append("\\高清图\\");
            str.Append(Convert.ToString(dt.Year));
            str.Append(Convert.ToString(dt.Month));
            str.Append(Convert.ToString(dt.Day));

这下总不会多或者少了吧,性能也一样提高了,正当你要忘记了的时候,突然有天你有看到了这段代码,看了好半天才终于知道自己要拼的什么字符串,也是醉了

你看看下面这段代码

String strPath = $"{sImagePath}\\{sIP.ToString()}\\高清图\\{Convert.ToString(dt.Year)}{Convert.ToString(dt.Month)}{Convert.ToString(dt.Day)}";
  
            Directory.CreateDirectory(strPath);
            strSpeFile = $"{strPath}\\{strTime}({sPlate.ToString()}).jpg";
  
            //将抓拍图片存储到队列中
            queueImg.Enqueue(strSpeFile);
            log.Error($"车牌识别图片路径:{strSpeFile}");
  
            strPath = $"{sImagePath}\\{sIP.ToString()}\\车牌图\\{Convert.ToString(dt.Year)}{Convert.ToString(dt.Month)}{Convert.ToString(dt.Day)}";
            Directory.CreateDirectory(strPath);
            strPlateFile = $"{strPath}\\{strTime}({sPlate.ToString()}).jpg";
  
            strPath = $"{sImagePath}\\{sIP.ToString()}\\二值化图\\{Convert.ToString(dt.Year)}{Convert.ToString(dt.Month)}{Convert.ToString(dt.Day)}";
            Directory.CreateDirectory(strPath);
            strTwoFile = $"{strPath}\\{strTime}({sPlate.ToString()}).bin";

 跟前面的都比较一下,是不是也能很快就看出来,变量也不用担心写错地方,性能怎么样?也是杠杠的。如果你还没有见过这种写法,那说明你out了,这是新技能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值