String与StringBuilder - 字符串的轻重量级

简介: 有人经常问String和StringBuilder有什么区别,啥时候用什么呢?其实,如果是简单的字符串应用的话,一般都用string。 下面我们来举个例子:string strEmail = "";strEmail += "" + xxxxx + "";strEmail += "" + yyyyy + "";strEmail += "" + xxxxx+ "";strEmail += "" + yyyyy + "";以上属于比较丑陋的代码了,像这种情况,至少,我们应该利用一下C#中的字符串换行符号@和string.Format吧。
有人经常问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

目录
相关文章
|
8月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
442 100
|
8月前
|
开发者 Python
Python中的f-string:高效字符串格式化的利器
Python中的f-string:高效字符串格式化的利器
609 99
|
8月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
|
8月前
|
开发者 Python
Python f-string:高效字符串格式化的艺术
Python f-string:高效字符串格式化的艺术
|
9月前
|
Python
Python中的f-string:更简洁的字符串格式化
Python中的f-string:更简洁的字符串格式化
424 92
|
10月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
470 14
|
11月前
|
存储 安全 Java
String StringBuffer StringBuilder 区别详解与对比分析
本文详细解析了Java中String、StringBuffer和StringBuilder的区别,从可变性、线程安全性和性能三个方面进行对比,并结合具体应用场景分析了三者的适用范围。通过性能测试示例展示了它们在字符串拼接时的效率差异,同时提供了实际代码案例帮助理解。总结指出,String适合少量操作或线程安全场景,StringBuffer适用于多线程环境,而StringBuilder则在单线程下性能最优。开发者应根据需求选择合适的类以优化程序性能。文末还附有相关面试资料供参考。
1297 2