C#中的string和StringBuilder
C#中的string和StringBuilder
- string
- string使用
- Length
- 字符串比较、CompareTo()
- 字符串连接
- 字符串的索引
- Replace()
- Split()
- Substring()
- ToUpper()、ToLower()
- Trim()
- Concat()
- Format()
- IndexOf()
- Insert()
- 总结
- StringBuilder
- 创建 StringBuilder对象
- Append()
- Insert()
- Remove()
- Replace()
- ToString()
- 总结
string
string 存在System命名空间中,其创建的字符串是不可变的
string使用
首先,创建字符串 string str = “www.sola.com”;
这样就直接创建了字符串 str,之后,对字符串进行一些属性的介绍
Length
Length属性是返回当前字符串的个数
string str = " www.sola.com";int sLen = str.Length;Console.Write(sLen);
如上,输出的为 www.sola.com 的个数,13
字符串比较、CompareTo()
字符串比较可以使用" == " 或者使用 CompareTo() 函数
if (str == "www.solar.com")
{Console.Write("True");
}
else
{Console.Write("False");
}
这是用 " == " 来进行比较的,当相等时,输出 True, 不想等,输出 False。
使用 CompareTo() 函数比较的话,如果相等,会返回 0, 若不想等,则返回 一个非 0 的值,用法如下
int nRet = str.CompareTo("www.solar.com");
Console.Write(nRet);
这时,nRet 返回值为 -1
字符串连接
在讲述字符串连接的时候,我需要声明一下,string 字符串是不可变的,也就是无法进行修改,所以当我们在更改string字符串的时候,往往都会重新创建一个string字符串然后拼接在一起组成新的字符串。
例如下:
str = "http://" + str;
Console.Write(str);
这样会生成新的字符串str 值为 “http://www.sola.com”。而其中的原理如下图:
我们创建一个str字符串时候,str 会指向堆中的内存。而当我们给新的字符串拼接的时候,会在堆内存中重新创建一个,然后将str重新指向新的字符串。
而老的字符串因为在堆中没有任何人的使用,则会被GC回收,这就是字符串重新拼接的原理
字符串的索引
字符串的索引是从 0 开始的,所以我们可以通过索引值来获取字符串的每一个字符,例如,我们要找到第一个 '.‘字符,第一个’.'字符的索引是 3,所以就可以这样使用。
char c = str[3];
Console.Write(c);
Replace()
Replace() 用一个字符或字符串替换给定字符串中的给定字符或字符串
例如,若把字符串中的www 替换成 sss
str = str.Replace("www", "sss");
Console.Write(str);
输出为:sss.sola.com
当然也可以字符进行处理,我们想把字符串中的 ‘.’ 替换成 ‘_’
str = str.Replace('.', '_');
Console.Write(str);
输出为:www_sola_com
Split()
Split() 在出现给定字符的地方,将字符串拆分为字符数组
例如,我们将str字符串按照 ‘.’ 来拆分
string[] strArray = str.Split('.');
foreach(var temp in strArray)
{Console.WriteLine(temp);
}
输出的结果就是
www
sola
com
注意的是Split()返回的值为字符串数组,所以要用字符串数组来接收
Substring()
Substring() 是截取给定字符串,有两个参数,第一个是从第几个索引开始,第二个是截取的长度,不填默认之后的所有
例如:截取第三个之后的所有
str = str.Substring(3);
Console.Write(str);
输出的结果就是:.sola.com
例如: 从第四个开始,截取后四个字符串
str = str.Substring(4, 4);
Console.Write(str);
输出的结果就是:sola
ToUpper()、ToLower()
ToUpper() 把字符串所有的小写转换为大写
ToLower() 把字符串所有的大写转换成小写
str = str.ToUpper();
Console.Write(str);
str = str.ToLower();
Console.WriteLine();
Console.Write(str);
输出:
WWW.SOLA.COM
www.sola.com
Trim()
Trim() 删除首尾空白字符
例如我们改写str = " www.sola.com ";
str = " www.sola.com";
str = str.Trim();
Console.Write(str);
输出:www.sola.com
Concat()
Concat是string类中的静态方法,是将两个字符串合并起来
str = string.Concat(str, "-sss", "-www");
Console.Write(str);
输出:www.sola.com-sss-www
Concat() 的参数可以有无数个,目的就是将参数顺序的合并在一起,组成新的字符串
Format()
Format() 是string类中静态方法,是格式化输出。
如下:
str = string.Format("www.{0}.com", 123);
Console.Write(str);
输出:www.123.com
IndexOf()
IndexOf() 通过给定的字符或字符串,进行查找,返回第一个符合条件的索引值,若不存在,则返回-1
int index = str.IndexOf("www");
Console.WriteLine(index);
index = str.IndexOf("wsw");
Console.WriteLine(index);
输出结果为:
0
-1
Insert()
Insert() 把一个字符串插入到另一个字符串中指定的索引处,返回新的字符串
str = str.Insert(2, "sef");
Console.Write(str);
输出的结果为:
wwsefw.123.com
总结
string字符串是创建了一个不可变的数据类型,一旦但字符串进行初始化,该字符串就不能改变内容,若想改变只能创建一个新的字符串把旧的内容赋值到新的字符串中,然后返回新的字符串的引用,若重复修改给定的字符串,效率会很低。
StringBuilder
StringBuilder 类是位于System.Text命名空间下的。是可变的数据类型
创建 StringBuilder对象
StringBuilder sb = new StringBuilder("www.sola.com");
StringBuilder sb1 = new StringBuilder(100);
StringBuilder sb2 = new StringBuilder("www.sola.com", 100);
这三种都是创建StringBuilder对象
第一个是直接创建,然后直接将 "www.sola.com"对其进行赋值,大小为"www.sola.com"大小
第二个是创建了 100字节内存的一个对象,并没有对其赋值,待后续赋值
第三个是创建了100字节内存的一个对象,并用"www.sola.com"进行赋值。
这三种都是创建对象时候占用内存。当在处理的过程中,发现使用内存不够了, StringBuilder会自动的添加一个新的大小为其原来 内存2倍内存
Append()
Append() 函数是对当前字符串追加一个字符或字符串
StringBuilder sb = new StringBuilder("www.sola.com");
sb.Append("-wwwsola");
Console.Write(sb);
输出结果为:www.sola.com-wwwsola
Insert()
Insert() 在制定位置上添加一个字符串或字符
例如:在第二个位置上插入ssss
sb.Insert(1, "ssss");
Console.Write(sb);
输出的结果为:wssssww.sola.com
Remove()
Remove() 在指定位置开始删除给定个数的字符
例如:删除 sola 四个字节
sb.Remove(4, 4);
Console.Write(sb);
输出的结果为:www…com
Replace()
Replace() 在当前字符串中,用给定的字符或字符串全部替换成另一个字符或字符串
例如:将所有的www 替换成 sss
sb.Replace("www", "sss");
Console.Write(sb);
输出的结果为:sss.sola.com
ToString()
ToString() 将当前StringBuilder中储存的字符串提取成一个不可变的字符串
返回值要用 string 接受
例如:
string str = sb.ToString();
Console.Write(str);
输出结果为:www.sola.com
总结
StringBuilder是可变的,大小会根据字符串内容来2倍增加,在多线程中,StringBuilder类行的字符串是不安全的。
C#中的string和StringBuilder相关推荐
- Java:中的String,StringBuilder,StringBuffer三者的区别
Java中的String,StringBuilder,StringBuffer三者的区别 最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBu ...
- c#中的string和StringBuilder的区别
string和StringBuilder的区别 解析c#中的string和StringBuilder的区别,只有非常了解后我们才能更好的编程和灵活使用. 区别 1.类 String 表示字符串, 比如 ...
- Java中的String,StringBuilder,StringBuffer三者的区别
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
- 重温java中的String,StringBuffer,StringBuilder类
不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...
- Java中的String、StringBuilder、StringBuffer
Java中的String是个永恒的话题,直说我想说的. 1.String 是永远不会变的,传递的引用是一个Copy,无论刮风下雨,它都在自己的小窝里呆的好好的. 2.重载"+"和S ...
- 探秘Java中的String、StringBuilder以及StringBuffer
转载:http://www.cnblogs.com/dolphin0520/p/3778589.html 一.你了解String类吗? 想要了解一个类,最好的办法就是看这个类的实现源代码,String ...
- java中string 和stringbuffer的区别_Java中的String,StringBuilder,StringBuffer三者的区别...
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
- Java中的String,StringBuilder,StringBuffer的区别
这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > ...
- 【转】探秘Java中的String、StringBuilder以及StringBuffer
探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一 ...
最新文章
- 计算机应用基础第二版在线作业c,计算机应用基础作业二(答案)
- 委托到Lambda的进化: ()= {} 这个lambda表达式就是一个无参数的委托及具体方法的组合体。...
- PostgreSQL学习总结(1)—— PostgreSQL 入门简介与安装
- 浅谈帆软报表的权限授权,以便于二次开发
- 在鼠标点击的位置 ,添加一个div ,类似手表右键菜单
- 2022年考研数据结构_5 树
- layer弹出层笔记
- 新年祝福:向所有开源工作人员表示真诚的感恩
- Apollo火后,深扒AI+交通产业的生态应用
- 暑假将至,人贩子猖狂
- Android 仿百合网超火爆社交app首页滑动效果
- Ansible学习笔记——JINJA2模板的语法及使用(template模块)
- 信息检索(IR)笔记1: 倒排索引(Inverted Index)
- 从英特尔上海紫竹研发中心归来,认真聊一聊傲腾
- 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案
- 2021年教育改革大动作
- BBEdit 12.6.3 FIXED 特别版 Mac 强大的文本和HTML编辑器及汉化工具
- rabbitmq-plugins enable rabbitmq_management Failed to start Elixir.
- Android安全专项-Apk加固
- (仿牛客论坛项目)01 - 开发社区首页