字符串拼接新技能

原创 2015年11月20日 09:24:38

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

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了,这是新技能。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

fortran字符串拼接

  • 2015年03月21日 15:39
  • 41KB
  • 下载

居然还有人对字符串拼接操作时StringBuilder/StringBuffer取代“+”有疑问

首先说明: 至于是StringBuilder还是StringBuffer去取代“+”,这就是实际应用场景需要考量的,看你的应用场景需要考虑线程安全性与否! 每个观点的提出都要有理有据: 如下是两...

vb.net json 字符串拼接

  • 2017年07月25日 10:14
  • 78KB
  • 下载

解决oracle数据库wm_concat()字符串拼接过长问题

解决oracle数据库wm_concat()字符串拼接过长问题

StringBuilder字符串拼接工具

  • 2013年09月27日 10:24
  • 15KB
  • 下载

Java 字符串拼接效率比较

字符串拼接的三种方法 ① 加号 ② concat方法 ③ StringBuilder(或StringBuffer)的append方法2 程序例子package...
  • Zen99T
  • Zen99T
  • 2016年04月26日 23:33
  • 4498

C++中宏定义中字符串拼接,标志粘贴

关于记号粘贴操作符(token paste operator): ## 1. 简单的说,“##”是一种分隔连接方式,它的作用是先分隔,然后进行强制连接。    其中,分隔的作用类似于空格。...

IOS开发NSString与int和float的相互转换以及字符串拼接、NSString、NSData、char* 类型之间的转换

一、NSString与int和float的相互转换 NSString *tempA = @"123"; NSString *tempB = @"456";  1.字符串拼接      ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符串拼接新技能
举报原因:
原因补充:

(最多只允许输入30个字)