1.string是一个引用类型,但使用起来像值类型
string str1 = "123";
string str2 = str1;
str2 = "456";
Console.WriteLine(str2);
2.string 的特点
A:字符串的不可变性
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。
如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。StringBuilder 运行速度听说是string 200倍。
B:字符串的留用
C:注意“+”号的应用,拼接字符串,如果“+”号两边有准确的值,是不影响性能的,如果是不确定的,这种情况下就造成了资源浪费。要避免不确定字符串相加
D:字符串池--对直接字符串来说
3.string 的函数
StringBuilder
![]()
![]()
![]()
Compare
已重载。 比较两个指定的 String 对象。
![]()
![]()
CompareOrdinal
已重载。 通过计算每个字符串中相应 Char 对象的数值来比较两个 String 对象。
![]()
CompareTo
已重载。 将此实例与指定的对象或 String 进行比较,并返回二者相对值的指示。
![]()
![]()
![]()
Concat
已重载。 连接 String 的一个或多个实例,或 Object 的一个或多个实例的值的 String 表示形式。
![]()
Contains
返回一个值,该值指示指定的 String 对象是否出现在此字符串中。
![]()
![]()
![]()
Copy
创建一个与指定的 String 具有相同值的 String 的新实例。
![]()
![]()
CopyTo
将指定数目的字符从此实例中的指定位置复制到 Unicode 字符数组中的指定位置。
![]()
![]()
EndsWith
已重载。 确定 String 的实例的末尾是否与指定的字符串匹配。
![]()
![]()
Equals
已重载。 已重写。 确定两个 String 对象是否具有相同的值。
![]()
![]()
![]()
Format
已重载。 将指定的 String 中的每个格式项替换为相应对象的值的文本等效项。
![]()
GetEnumerator
检索一个可以循环访问此字符串中的每个字符的对象。
![]()
![]()
GetHashCode
已重写。 返回该字符串的哈希代码。
![]()
![]()
GetType
获取当前实例的 Type。 (从 Object 继承。)
![]()
![]()
GetTypeCode
返回类 String 的 TypeCode。
![]()
![]()
IndexOf
已重载。 报告 String 或一个或多个字符在此字符串中的第一个匹配项的索引。
![]()
![]()
IndexOfAny
已重载。 报告指定 Unicode 字符数组中的任意字符在此实例中第一个匹配项的索引。
![]()
![]()
Insert
在此实例中的指定索引位置插入一个指定的 String 实例。
![]()
![]()
![]()
Intern
检索系统对指定 String 的引用。
![]()
![]()
![]()
IsInterned
检索对指定 String 的引用。
![]()
IsNormalized
已重载。 指示此字符串是否符合特定的 Unicode 范式。
![]()
![]()
![]()
IsNullOrEmpty
指示指定的 String 对象是 空引用(在 Visual Basic 中为 Nothing) 还是 Empty 字符串。
![]()
![]()
![]()
Join
已重载。 在指定 String 数组的每个元素之间串联指定的分隔符 String,从而产生单个串联的字符串。
![]()
![]()
LastIndexOf
已重载。 报告指定的 Unicode 字符或 String 在此实例中的最后一个匹配项的索引位置。
![]()
![]()
LastIndexOfAny
已重载。 报告在 Unicode 数组中指定的一个或多个字符在此实例中的最后一个匹配项的索引位置。
![]()
Normalize
已重载。 返回一个新字符串,其二进制表示形式符合特定的 Unicode 范式。
![]()
![]()
![]()
op_Equality
确定两个指定的 String 对象是否具有同一值。
![]()
![]()
![]()
op_Inequality
确定两个指定的 String 对象是否具有不同的值。
![]()
![]()
PadLeft
已重载。 右对齐此实例中的字符,在左边用空格或指定的 Unicode 字符填充以达到指定的总长度。
![]()
![]()
PadRight
已重载。 左对齐此字符串中的字符,在右边用空格或指定的 Unicode 字符填充以达到指定的总长度。
![]()
![]()
![]()
ReferenceEquals
确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。)
![]()
![]()
Remove
已重载。 从此实例中删除指定个数的字符。
![]()
![]()
Replace
已重载。 将此实例中的指定 Unicode 字符或 String 的所有匹配项替换为其他指定的 Unicode 字符或 String。
![]()
![]()
Split
已重载。 返回包含此实例中的子字符串(由指定 Char 或 String 数组的元素分隔)的 String 数组。
![]()
![]()
StartsWith
已重载。 确定 String 实例的开头是否与指定的字符串匹配。
![]()
![]()
Substring
已重载。 从此实例检索子字符串。
![]()
![]()
ToCharArray
已重载。 将此实例中的字符复制到 Unicode 字符数组。
![]()
![]()
ToLower
已重载。 返回此 String 转换为小写形式的副本。
![]()
ToLowerInvariant
返回此 String 对象的转换为小写形式的副本,返回时使用固定区域性的大小写规则。
![]()
![]()
ToString
已重载。 已重写。 将此实例的值转换为 String。
![]()
![]()
ToUpper
已重载。 返回此 String 转换为大写形式的副本。
![]()
![]()
ToUpperInvariant
返回此 String 对象的转换为大写形式的副本,返回时使用固定区域性的大小写规则。
![]()
![]()
Trim
已重载。 从此实例的开始位置和末尾移除一组指定字符的所有匹配项。
![]()
![]()
TrimEnd
从此实例的结尾移除数组中指定的一组字符的所有匹配项。
![]()
![]()
TrimStart
从此实例的开始位置移除数组中指定的一组字符的所有匹配项。
StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,可以为它可容纳的最大字符数指定一个值。
StringBuilder内部维护着一个Char类型的数组
StringBuilder sb = new StringBuilder();
sb.Append("123");
sb.ToString();
StringBuild的函数
Append
已重载。 在此实例的结尾追加指定对象的字符串表示形式。
![]()
![]()
AppendFormat
已重载。 向此实例追加包含零个或更多格式规范的格式化字符串。每个格式规范由相应对象参数的字符串表示形式替换。
![]()
AppendLine
已重载。 将默认的行终止符(或指定字符串的副本和默认的行终止符)追加到此实例的末尾。
![]()
CopyTo
将此实例的指定段中的字符复制到目标 Char 数组的指定段中。
![]()
![]()
EnsureCapacity
确保 StringBuilder 的此实例的容量至少是指定值。
![]()
![]()
Equals
已重载。 返回一个值,该值指示此实例是否与指定的对象相等。
![]()
![]()
GetHashCode
用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。)
![]()
![]()
GetType
获取当前实例的 Type。 (从 Object 继承。)
![]()
![]()
Insert
已重载。 将指定对象的字符串表示形式插入到此实例中的指定字符位置。
![]()
![]()
![]()
ReferenceEquals
确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。)
![]()
![]()
Remove
将指定范围的字符从此实例中移除。
![]()
![]()
Replace
已重载。 将此实例中所有的指定字符或字符串替换为其他的指定字符或字符串。
下面是从网上找到的具体的几个方法的应用实例:
(1)Append 方法可用来将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。以下示例将一个 StringBuilder 对象初始化为“Hello World”,然后将一些文本追加到该对象的结尾处。将根据需要自动分配空间。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(MyStringBuilder);
此示例将 Hello World! What a beautiful day. 显示到控制台。
(2)AppendFormat 方法将文本添加到 StringBuilder 的结尾处,而且实现了 IFormattable 接口,因此可接受格式化部分中描述的标准格式字符串。可以使用此方法来自定义变量的格式并将这些值追加到 StringBuilder 的后面。以下示例使用 AppendFormat 方法将一个设置为货币值格式的整数值放置到 StringBuilder 的结尾。
int MyInt = 25;
StringBuilder MyStringBuilder = new StringBuilder("Your total is ");
MyStringBuilder.AppendFormat("{0:C} ", MyInt);
Console.WriteLine(MyStringBuilder);
此示例将 Your total is $25.00 显示到控制台。
(3)Insert 方法将字符串或对象添加到当前 StringBuilder 中的指定位置。以下示例使用此方法将一个单词插入到 StringBuilder 的第六个位置。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);
此示例将 Hello Beautiful World! 显示到控制台。
(4)可以使用 Remove 方法从当前 StringBuilder 中移除指定数量的字符,移除过程从指定的从零开始的索引处开始。以下示例使用 Remove 方法缩短 StringBuilder。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);
此示例将 Hello 显示到控制台。
(5)使用 Replace 方法,可以用另一个指定的字符来替换 StringBuilder 对象内的字符。以下示例使用 Replace 方法来搜索 StringBuilder 对象,查找所有的感叹号字符 (!),并用问号字符 (?) 来替换它们。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Replace('!', '?');
没有评论:
发表评论