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

  • 相关阅读:
    1042 Shuffling Machine
    1043 Is It a Binary Search Tree
    1044 Shopping in Mars
    1443. Minimum Time to Collect All Apples in a Tree
    1045 Favorite Color Stripe
    Java笔记八:Java内置的包装类(1)
    Java笔记七:Java数字和日期处理(2)
    Java笔记六:Java数字和日期处理(1)
    Java笔记五: Java正则表达式
    Java笔记四:Java字符串处理
  • 原文地址:https://www.cnblogs.com/davidgu/p/1540634.html
Copyright © 2011-2022 走看看