zoukankan      html  css  js  c++  java
  • String与StringBuilder 字符串的轻重量级

    有人经常问String和StringBuilder有什么区别,啥时候用什么呢?

    其实,如果是简单的字符串应用的话,一般都用string。
     
    下面我们来举个例子:
    string strEmail = "";

    strEmail 
    += "<tr><td>" + xxxxx + "</td>";
    strEmail 
    += "<td>" + yyyyy + "</td>";
    strEmail 
    += "<td>" + xxxxx+ "</td>";
    strEmail 
    += "<td>" + yyyyy + "</td></tr>";

    以上属于比较丑陋的代码了,像这种情况,至少,我们应该利用一下C#中的字符串换行符号@和string.Format吧。
    可以这样写:
    strEmail = "";
    strEmail 
    += string.Format(@"
    <tr>
    <td>{0}</td>
    <td>{1}</td>
    <td>{2}</td>
    <td>{3}</td>
    </tr>
    ",
    xxxxx,
    yyyyy,
    xxxxx,
    yyyyy);

    但是以上写法还不是最好的,这个时候我们想到了StringBuilder。
    因为在比较重量级的字符串拼接的场景下,最好使用StringBuilder。
    新的写法如下:
    var sbEmail = new StringBuilder(@"<table border=""1"">
    <tr>
    <td>Header A</td>
    <td>Header B</td>
    <td>Header C</td>
    <td>Header D</td>
    </tr>
    ");

    //items只是一个特定的ArrayList,用于循环添加表格的行,可以不必理会
    foreach (var item in items)
    {
      sbEmail.AppendFormat(
    @"
      <tr>
      <td>{0}</td>
      <td>{1}</td>
      <td>{2}</td>
      <td>{3}</td>
      </tr>
    ",
      xxxxx,
      yyyyy,
      xxxxx
      yyyyy);
    }

    sbEmail.AppendLine(
    "</table>");

    我们需要注意的是:AppendFormat和AppendLine

  • 相关阅读:
    Explain用法
    轻量快速的 Python ASGI 框架 uvicorn
    conda常用命令
    ubuntu 安装并配置zsh
    ubuntu安装zsh终端
    /etc/profile、/etc/bashrc、.bash_profile、.bashrc
    python用List的内建函数list.sort进行排序
    python对象排序
    修改python接口返回给前端的格式封装
    linux设置uwsgi开机自启
  • 原文地址:https://www.cnblogs.com/davidgu/p/1540634.html
Copyright © 2011-2022 走看看