1. string的缺点是每次字符串变量的内容发生了改变时,都必须重新分配内存。你想想,如果创建一个迭代100000次的循环,每次迭代都将一个字符连接到字符串,这样内存中就会有100000个字符串,每个字符串仅仅与前一个字符串相伴只是有一个字符不同,性能影响是很大的。StringBuilder通过分配一个缓存,就是一个工作区来解决这些问题,在工作区中队字符串应用StringBuilder类的相关方法。包括添加,删除,移除,插入和替换字符等等。执行完之后,将调用ToString方法把工作区中的内容转换为一个字符串,方便赋给一个字符串变量。这样StringBuilder会提升一些性能。

  2. 企业项目中用的比较多,经常SQL连接。StringBuilder的对象是动态的,可以改变字符串的内容。StringBuilder修改字符串内容的方法。

    1:StringBuilder.Append()。将内容追加到当前StringBuilder字符串的结尾。

    StringBuilder MySB = new StringBuilder("您好!");    MySB.Append(" 大家好!");    Console.WriteLine(MySB);

    2:StringBuilder.AppendFormat()。用一个带格式文本来代替字符串要传递的符号。

    int MyMoney = 24;    StringBuilder MySB = new StringBuilder("欠我的钱是 ");    MySB.AppendFormat("{0:C} ", MyMoney);    Console.WriteLine(MySB);

    3:StringBuilder.Insert(int,string)。将字符串和对象插入到当前StringBuilder字符串的指定位置。

    4:StringBuilder.Remove(p,n)。在当前StringBuilder对象中移除指定的字符,就是说从p位置开始删除n个字符。

    5:StringBuilder.Replace(a,b)。就是用b替换a指定字符串,a和b都是字符或字符串。

    string a="aaa aaa aaa";

    string b=a.Replace(‘a’,‘w’);

    结果输出“www www www”。

    上面这几种方法string也是用的,甚至比StringBuilder还要多一些。多出来的有如下:PadRight()/PadLeft()方法,根据指定宽度,用相应的个数给定字符天才字符中,如果未指定填充字符,则使用空白符来填充。

    string a="abcdefg";

    a=a.PadRight(a.Length+3,"!");

    结果输出“abcdefg!!!”。

    Split(char[])方法,char数组包含分隔符,可用将字符串分割为子串,这些子串将作为一个字符串数组中的元素返回。

    Substring()方法,从指定的位置N开始抽取指定的长度串,如果指定为1,就抽取长度为1的子串。

    ToUpper()/ToLower(),返回字符串的大小写形式的副本。

    Trim()/Trim(char[]),删除字符串中所有的空白符,如果提供的是一个char数组,则删除这个char数组指定的前导和结尾字符。

    TrimEnd(char[])/TrimStart([]),删除char数字指定的所有前导和末尾的字符,如果数组是null,则删除空白符。

    ToCharArray()/ToCharArray(n,1),从字符串中抽取字符,并将它放入一个Unicode字符数组中

C#string与stringBuilder的区别的更多相关文章

  1. String,StringBuffer,StringBuilder的区别

    public static void main(String[] args) { String str = new String("hello...."); StringBuffe ...

  2. [置顶] String StringBuffer StringBuilder的区别剖析

    这是一道很常见的面试题目,至少我遇到过String/StringBuffer/StringBuilder的区别:String是不可变的对象(final)类型,每一次对String对象的更改均是生成一个 ...

  3. string与stringbuilder的区别

    1.分析string与stringbuilder的区别,我们先来看下面一段代码 首先我们使用string进行字符串的拼接 class Program { static void Main(string ...

  4. String,StringBuffer,StringBuilder的区别及其源码分析

    String,StringBuffer,StringBuilder的区别这个问题几乎是面试必问的题,这里做了一些总结: 1.先来分析一下这三个类之间的关系 乍一看它们都是用于处理字符串的java类,而 ...

  5. Question 20171115 String&&StringBuffer&&StringBuilder的区别与联系?

    Question 20171114 String&&StringBuffer&&StringBuilder的区别和联系 创建成功的String对象,其长度是固定的,内容 ...

  6. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  7. 深入理解String, StringBuffer, StringBuilder的区别(基于JDK1.8)

    String.StringBuffer.StringBuilder都是JAVA中常用的字符串操作类,对于他们的区别大家也都能耳熟能详,但底层到底是怎样实现的呢?今天就再深入分析下这三种字符串操作的区别 ...

  8. java中String与StringBuilder的区别

    相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天我在这里重新把这个概念给大家复习一下,顺便牵出 J2SE ...

  9. Android/Java 中的 String, StringBuffer, StringBuilder的区别和使用

    Android 中的 String, StringBuffer 和 StringBuilder 是移动手机开发中经常使用到的字符串类.做为基础知识是必须要理解的,这里做一些总结. A.区别 可以从以下 ...

  10. 在JAVA中,String,Stringbuffer,StringBuilder 的区别

    首先是,String,StringBuffer的区别 两者的主要却别有两方面,第一是线程安全方面,第二是效率方面 线程安全方面: String  不是线程安全的,这意味着在不同线程共享一个String ...

随机推荐

  1. c语言连接mysql数据库的实现方法

    C语言连接mysql数据库,需要相应的头文件和lib文件,如果你安装Mysql数据库,会在安装目录下找到这些库文件,如果没有安装,也可以在网上找到 我这里也有一份网上找到的:/201205/other ...

  2. Java和C#基本类库的区别

    java.lang java .net Boolean System.Boolean Byte System. Byte Character System.Char Class System.Type ...

  3. 全面掌握IO(输入/输出流)

    File类: 程序中操作文件和目录都可以使用File类来完成即不管是文件还是目录都是使用File类来操作的,File能新建,删除,重命名文件和目录,但File不能访问文件内容本身,如果需要访问文件本身 ...

  4. laraver框架学习------工厂模型填充测试数据

    在laravel中填充数据有几种方式.一种是Seeder,另一种是工厂模式进行的填充. 工厂模式可以实现大批量的填充数据,数据的量可以自定义.这也为后续的软件测试提供方便. 在laravel框架有da ...

  5. Visual Studio控制台程序输出窗口一闪而过的解决方法

    转载大牛的博客,自己也遇到了类似的问题,解决方法很详细,也很管用   刚接触 Visual Studio的时候大多数人会写个Hello World的程序试一下,有的人会发现执行结束后输出窗口会一闪而过 ...

  6. FME Cloud 账号申请流程

    第一步,访问SAFE的FME Cloud注册页,官网明确表态,如果你是一个新的FME Cloud用户,你可以免费获得一个初级版.地址:https://console.fmecloud.safe.com ...

  7. sqlserver-表分区

    最近对公司数据库性能方面改造.现已初建成效. 公司原先数据库问题颇多,简单列举下: 1.数据表文档缺失. 2.数据库900多张表,接近一半都是备份和一些报表,没有分库处理 3.大数量的表按照年份人工导 ...

  8. Scrum Meeting NO.4

    Scrum Meeting No.4 1.会议内容 今天我们开始着手重构前端通讯模块的代码.用封装性较好的HttpClient代替了源代码中比较底层的访问方式,并按照约定的json格式处理HttpRe ...

  9. 读书笔记(chapter1-2)

    一.linux内核简介 1.1unix的历史 1.unix强大的根本原因:1.unix很简洁,仅仅提供几百个系统调用并且有一个非常明确的设计目的:2.在unix中,所有的东西都被当作文件对待:3.un ...

  10. c# dataGridView cell添加下拉框

    应用场景: dataGridView需要某一个cell变成下拉框样式. 思路详解: dataGridVie添加固定格式的row. 代码: DataGridViewRow row = new DataG ...