C#数据结构和算法-字符串、String 类和StringBuilder类

*本文为摘抄笔记*

Preface
当程序需要对String对象进行许多改变时会用到StringBuilder类。
因为字符串和String对象都是不可改变的,而StringBuilder对象则是易变的。
String类不可变,就意味着每次对象进行改变时都需要创建一个新的对象副本。
如果在创建长的字符串,或者是对相同对象进行许多改变,那么就应该用StringBuilder类来代替。
StringBuilder对象是可变的,性能会更好。

字符串是字符的序列,可以包含字母、数字和其他符号。C#语言中,用双引号“ Yamin Wang”可以产生文字串。

字符串可以由来自Unicode字符集的任何字符组成。
字符串也可以是没有字符而组成的,这种特殊的字符串被称为是空字符串。(“”)
表示空格的字符串是(“ ”)

字符串既是本地类型又是类的对象。可以把字符串作为本地数据值来使用。

1 创建String对象
string name=“Yamin Wang”;
C#字符串允许在其中放置转义字符。
转义字符由一个反斜杠开始(\),后面跟着单独一个表示版式的字母。

2 常用String类的方法
三个最重要的操作分别是:1)找到字符串的子串  2)确定字符串的长度 3)确定字符在字符串中的位置。

string.Length 确定字符串的长度
string.IndexOf(“ ”) 确定字符在字符串中的位置
string.Substring(开始位置,要抽出字符的数量)   找到字符串的子串

3 Split方法和Join方法
Split方法 :用于分解字符串。Split方法取到一条字符串后,就会把它分解成数据成分块,然后把这些块放入String数组内。
使用Split方法时可以指定要寻找的分隔符的内容。
该参数必须以char型数组的形式出现。数组的第一个元素将是用作分隔符的字符。
data.Split(分隔符,要存储到数组内的元素的数量)
e.g.
string[] sdata;
char[] delimiter=new char[]{‘,‘};
sdata=data.Split(delimiter,data.Length);

Join方法:从数组变为字符串。此方法取走两个参数:原始数组以及用来分隔元素的字符。
调用此方法来自String类本身而不是String的实例。
String.Join("字符",数组)

4 比较字符串的方法
Equals方法:由String对象调用,把另外一个String对象取作它的参数。逐个字符比较两个String对象。
如果相同,返回True,else return false
e.g.
s1.Equals(s2)

CompareTo方法:取一个String作为参数。会返回1,-1,0。
e.g.
s1.CompareTo(s2)

如果s1==s2 返回0
s1>s2 返回-1;
s2>s1 返回1;

Compare方法:用一个类方法来调用
String.Compare(s1,s2)

StartsWith
EndsWith:取一个字符串作为参数,若实例是以字符串参数作为开始或者结束
那么方法都会返回True

e.g.
noun.EndsWith("s")

5 处理字符串的方法
插入新字符,从字符串中移除字符,用新字符替换旧字符,改变某些字符的情况
以及向字符串添加空格或者从字符中移除空格。在String类中针对这些操作有相应的方法。

Insert: 
String1=String0.Insert(Position,String)
Remove
(取走两个整数参数,一个开始位置和一个计数器,计数器就是要移除字符的数量)
s1=s1.Remove(Position,name.Length)
Replace
取两个参数:要移除掉的字符串和用来替换的字符串。返回新的字符串。

ToLower
ToUpper 把字符串从小写转换成大写形式

Trim
TrimEnd   把空格或者其他字符从字符串的任一端移除掉

arr.Trim(charArr[0])

StringBuilder类
StringBuilder类提供了对多变的String对象的存取。String类的对象是不变的,每次改变String对象的值,就会产生一个新的对象来保存数值。
StringBuilder对象却是多变的。当对StringBuilder对象进行改变时,正在改变的是原始对象而不是对副本进行操作。

使用StringBuilder类必须using System.Text
1、构建StringBuilder对象
StringBuilder sb=new StringBuilder(); 默认可以保存长度为16个字符的字符串
StringBuilder sb=new StringBuilder(25); 可以保存25个字符的对象。
StringBuilder sb=new StringBuilder("Hello,world")
每次一旦超过StringBuilder对象的容量,那么容量就会增加16个字符。

2、获取并且设置关于StringBuilder对象的信息
Length指定了当前实例中字符的数量
Capacity属性则返回实例的当前容量  Capacity()
MaxCapacity返回对象当前实例中所允许的最大字符数量

3、修改StringBuilder对象
Append方法:在StringBuilder对象的末尾处添加字符。
取一个字符串作为参数,并把字符串串连到对象中当前值的末尾。
sb.Append(words[i])

Insert:允许在当前StringBuilder对象中插入字符串。
取三个参数,第一个说明插入的开始位置startPosition,第二个是要插入的字符串。第三个参数为可选项,说明打算在对象中插入字符串的次数。

Remove 把字符从StringBuilder对象中移除掉。两个参数:开始位置和要移除掉的字符的数量。‘
Replace:替换StringBuilder对象的字符。两个参数:要替换的旧字符串和要替换的新字符串。

在处理StringBuilder对象时,经常需要把它们转换成字符串,可以使用ToString方法来实现。会返回StringBuilder实例中的一个字符串实例。

时间: 2024-10-06 15:20:18

C#数据结构和算法-字符串、String 类和StringBuilder类的相关文章

数据结构与算法---字符串(下)

前面两篇文章,分别介绍了字符串的概念.抽象数据类型.KMP模式匹配算法.这篇文章,我们来学习字符串的一些常用算法. 字符串的相关操作算法 StrAssign: /* 功能:生成一个其值等于Chars的串T */ Status StrAssign(String T, char *chars) { int i; if (chars[0] > MAXSIZE) return ERROR; T[0] = chars[0]; //chars[0]存放的是字符chars的长度 T[0]存放着的是串T的长度

一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对比

本文主要介绍String类.StringBuffer类.StringBuilder类的区别  : 一.概述 (一)String 字符串常量,但是它具有不可变性,就是一旦创建,对它进行的任何修改操作都会创建一个新的字符串对象. (二)StringBuffer 字符串可变量,是线程安全的,和StringBuilder类提供的方法完全相同. 区别在于StringBuffer每个方法中前面添加了"synchronized",保证其是线程安全的. (三)StringBuilder 字符串可变量,

.Net的String类与StringBuilder类操作

关于.NET提供了许多可以直接使用的类代码,常用的包括Convert类.String类和StringBuilder类.DateTimel类和TimeSpan类.Math类等等. 其中Convert类提供的方法都是静态方法,主要用于数据类型的转换: 例如: 字符串数据类型  -----> 整形 string str ="123"; int Getstr = Convert.Int32(str); 但要注意类型转换的取值范围. 当然DateTime类和TimeSpan类是针对时间这一

一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照

本文主要介绍String类.StringBuffer类.StringBuilder类的差别  : 一.概述 (一)String 字符串常量.可是它具有不可变性,就是一旦创建,对它进行的不论什么改动操作都会创建一个新的字符串对象. (二)StringBuffer 字符串可变量,是线程安全的,和StringBuilder类提供的方法全然同样. 差别在于StringBuffer每一个方法中前面加入了"synchronized",保证其是线程安全的. (三)StringBuilder 字符串可

Java中String类StringBuffer类和StringBuilder类的区别

首先阐述String类和StringBuffer类的区别,String类是常量,不能添加,而StringBuffer则是一个字符缓冲区,可以往里面添加字符串.比如说: <span style="font-size:18px;">String str = "helloworld"; str += "welcome";</span> 这里其实过程是这样的:生成了String对象 "helloworld" 引

Java学习笔记20(String类应用、StringBuffer类、StringBuilder类)

1.获取指定字符串中大小写和数字的个数: package demo; public class StringTest { public static void main(String[] args) { getCount("IamHandsome666"); } public static void getCount(String str) { int upper = 0; int lower = 0; int digit = 0; for (int i = 0; i < str

String Buffer和StringBuilder类-java

Java String Buffer和StringBuilder类 对字符串进行修改时,需要String Buffer和StringBuilder类 能够被多次修改,却不产生新的未使用对象 StringBuilder类,不是线程安全的. 速度优势,要求安全的情况下必须用StringBuffer类 public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer("e

JavaSE入门学习29:Java常用类之StringBuffer类和StringBuilder类

一StringBuilder类 (1)认识StringBuilder类 在Java中,除了可以使用String类来存储字符串,还可以使用StringBuilder类或 StringBuffer类存储字符串,在需 要频繁对字符串进行修改操作时使用StringBuilder的效率比String要高. String 类具有是不可变性.如: 运行结果: 从运行结果中我们可以看到,程序运行时会额外创建一个对象,保存 "helloworld".当频繁操作字符串时,就会额 外产生很多临时变量.使用S

数据结构与算法---字符串(上)

   hey,you guys. 好久没有继续我们的数据结构学习了,今天让我们一起来学习,开发中非常重要的一种数据类型--字符串.关于字符串,大家应该不会陌生.例如,我们做web开发,需要校验用户输入的注册信息是否合法,或者判断用户输入的账户.密码.是否正确等等.我们通过调用字符串的相关函数,就可以解决我们的需求.古语有云:"知其然,知其所以然".我们要做的,不仅仅是会调用字符串的方法,更要明白这些方法的原理.例如,在没有学习字符串之前,我认为要比较两个字符串是否相等,只需这样: st