字符串拼接新技能

来源:互联网 发布:淘宝怎么买lol韩服账号 编辑:程序博客网 时间:2024/05/16 12:34

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

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

1 0
原创粉丝点击