String类

ns:System

String类封装了一系列不能被改变的Unicode字符序列 字符属于引用类型 但它又具有值类型的行为 固定不变意味着 一旦在托管堆中分配了一块内存来存储字符 字符将固定不变 当尝试为一个字符类型的变量赋一个新字符时 系统将会在托管堆上划分一块新的内存来存储这个值 原来那个String对象的值实际上并没有发生变化 例如将一个名为Str的变量指向一个字符串"aa" 此时内存将划分一块区域来存储"aa" 后来又将字符串"bb"赋值给变量Str那么此时虽然Str的值为"bb" 但内存中还有"aa"这个字符串 即字符串是引用类型 变量str引用了"aa" 后来又引用了"bb" 值是"bb" 但"aa"还留在内存中 C#提供了string关键字来表示一个字符串的类型 而无需使用String作为字符的类型声明 String类具有一个索引器 用于索引字符串中的某单个字符 所以可以通过在对象上调用索引器指定index来获取某单个字符

 string str = "hello";
 Console.WriteLine(str[]);//return h

String类的静态方法

Compare静态方法

比较两个参数字符的大小 如果参数1>参数2 返回1 如果参数1==参数2 返回0 参数1<参数2 返回-1 可以通过参数ignoreCase指定是否不区分大小写 比较规则默认是a<z 对于null 任何字符都大于它

 var result=String.Compare("-1", null);
 Console.WriteLine(result);//return 1

最后可以通过指定索引来比较字符中的子串的大小 如

 , , );//比较abcd中字符bc和efgh中的字符fg的大小
 Console.WriteLine(result);//return -1

Concat静态方法

将N个字符或对象连接成一个字符串返回 一般不使用此方法来连接字符串 考虑使用StringBuilder 此方法还可以用于将数组中的元素连接成一个字符 如果数组元素是引用类型的对象 且没有默认值 则将对象类型的完全限定名的字符表示连接在一起 有默认值则使用默认值的字符表示连接其它对象的完全限定名

 object[] strAry = { new DateTime(),new Person()};
 var result = String.Concat(strAry);//return 0001/1/1 0:00:00LearningCsharp.Person

Equals静态方法

比较两个字符串是否相等 与object的Equals不一样 此方法只比较值是否相等 要比较对象引用的是否是同一地址 应使用object的ReferenceEquals或Equals方法

Format静态方法

格式化字符串 此方法用于在字符串中插入占位符 然后用变量的值来填充占位符 优点在于 不必使用+运算符号来连接字符和变量的值 也不必使用StringBuilder来连接字符 此方法提供了更简洁直观的方式来生成一个新的字符串 如

 string str1="sam";
 string str2="20°";
 var result = String.Format("你好{0}今天温度为{1}", str1, str2);//return 你好sam今天温度为20°

占位符可以有N个 使用{数字}来表示 必须按顺序来编写占位符 即必须从0开始按顺序编写 每个占位符对应参数出现的位置 如例子中0占位符对用参数str1 以此类推

Join静态方法

以指定的字符作为分隔符连接N各字符串 如

 string str1="sam";
 string str2="leo";
 var result = String.Join(",",str1,str2);//以逗号作为分隔符连接两个字符
 Console.WriteLine(result);//return sam,leo

可以将数组元素以分割字符连接在一起

 string[] strAry = { "sam","leo"};
 var result = String.Join(",", strAry);

可以指定数组索引和要连接的元素个数

 string[] strAry = { "sam","leo","korn","lily"};
 , );//return leo,korn

String类实例方法

Clone方法

克隆当前字符串的引用 返回一个引用的实例 此方法得到的对象和调用此方法的对象将是同一个引用地址 可以测试来证明

 string str = "sam";
 object strClone = str.Clone();
 Console.WriteLine(object.ReferenceEquals(str, strClone));//return true

实际上可以这样使用 得到相同的结果

 string str = "sam";
 object strClone = str;
 Console.WriteLine(object.ReferenceEquals(str, strClone));//return true

CompareTo方法

作用与静态的Compare方法是一样的 静态的Compare方法的参数1对应的是调用CompareTo实例方法的对象 仅此而已

CopyTo方法

将字符串的一部分复制到一个char数组中 它的参数如下

sourceIndex:要复制的某子字符串在字符串中的索引 一个数字

destination:要将子字符复制到的Unicode 字符数组 一个char类型的数组

destinationIndex:提供char数组的索引 子字符串将被复制到这个索引位置

count:原字符中要复制的字符个数 从sourceIndex指定的索引开始按顺序复制count个

 string str = "sam";
 string newStr = "Hello-----Welcom";
 char[] chaAry=newStr.ToCharArray();
 str.CopyTo(, chaAry, , );
 Console.WriteLine(chaAry);//return Hello-sam-Welcom

StartsWith方法

测试当前字符开头的字符是否是参数指定的字符

 string str = "sam";
 Console.WriteLine(str.StartsWith("s"));//return true
 Console.WriteLine(str.StartsWith("sa"));//return true
 Console.WriteLine(str.StartsWith("sam"));//return true

EndsWith方法

测试当前字符结束的字符是否是参数指定的字符

Equals方法

作用与静态的Equals方法是一样的 静态的Equals方法的参数1对应的是调用Equals实例方法的对象 仅此而已

GetEnumerator方法

获取一个可以循环访问当前字符串中的每个字符的对象

 string str = "sam";
 IEnumerator charList=str.GetEnumerator();
 while (charList.MoveNext())
 {
     Console.WriteLine(charList.Current);//return s a m
 }

GetHashCode方法

返回该字符串的哈希码

IndexOf方法

在当前字符中查找某字符的下标 查找顺序从当前字符的最左边开始 查不到返回-1 区分大小写 此方法具有多个重载 可根据实际情况来调用 比如可以指定查找的开始位置、结束位置、查找的字符个数

LastIndexOf方法

在当前字符中查找某字符的下标  查找顺序从当前字符的最右边开始 查不到返回-1 区分大小写 此方法具有多个重载 可根据实际情况来调用 比如可以指定查找的开始位置、结束位置、查找的字符个数

Insert方法

根据参数1提供的下标将参数2插入到当前字符串中 此方法并不改变原来的字符 它返回一个插入了字符的新字符

 string str = "sam";
 , "hello ");
 Console.WriteLine(result);//return hello sam

PadLeft方法

在当前字符的最左边填充空格以使当前字符格式化 空格个数由参数1指定 默认是填充空格 但也可以填充其它字符 要填充其它字符 需使用参数2指定 返回一个新的字符

 string str = "sam";
 );
 Console.WriteLine(result);

例子中为str填充了100个空格 结果如图

 string str = "sam";
 ,'-');
 Console.WriteLine(result);

PadRight方法

与PadLeft类似 区别是填充的空格或字符是在当前字符的最右边

Remove方法

从当前字符中移除指定下标位置的字符 可以提供参数2以指定要移除的个数 如果不提供参数2 默认从下标处开始移除直到结束位置 返回一个新的字符

Replace方法

用参数2指定的字符替换参数1指定的当前字符中的子字符 返回一个新的字符

Split方法

默认以空格分割当前字符 也可以以参数指定的char类型的字符分割当前字符 参数提供的分割字符必须出现在当前字符中  返回一个string类型的数组 存储分割后的字符

 string str = "hello-welcom-sam";
 string[] result = str.Split('-');
 foreach (var item in result)
 {
     Console.WriteLine(item);
 }

 string str = "hello-welcomOsam";
 char[] cutStr={'-','O'};
 string[] result = str.Split(cutStr);
 foreach (var item in result)
 {
     Console.WriteLine(item);
 }

Substring方法

在当前字符的参数指定的下标处提取子字符 默认从下标处提取到结束 可以提供参数2指定 要提取的个数 返回一个新的字符

ToCharArray方法

将当前字符中的每个单字符作为返回的char类型的数组的元素 可以提供参数1和参数2分别指定需要从当前字符的哪个下标处开始提取和提取的个数

ToLower方法

将当前字符的子字符全部转换为小写 返回一个新的字符

ToUpper

将当前字符的子字符全部转换为大写 返回一个新的字符

ToString方法

调用Object类的ToString方法 将对象转换为字符表示 对于String来说 此方法返回的就是它自己 可以通过一个IFormatProvider参数来提供特定于文化信息的格式 如

 ;
 aa.ToString("n");////生成 12,345.00 

 ToString("c")
 ;
 string bb = aa.ToString("c");//生成 ¥12,345.00 

 double aa = 0.12;
 string bb = aa.ToString("p");//生成 12%  0.12的100倍 用百分比表示

Trim方法

默认移除当前字符的最开始处的空白符和结尾处的空白符 可以通过参数指定要移除的最开始的字符、尾部字符 类似的还有TrimStart、TrimEnd

 string str = "       hello           ";
 var result = str.Trim();//return hello

 string str = "        hello    ";
 var result = str.Trim('h', 'o');//return         ell    

第二个例子没有移除开始和尾部空白符 因为指定了参数h和o 将在当前字符的最开始位置查找h和o

最后String类重载了==和!=运算符 用于比较两个字符是否相等或不等……

C# - 学习总目录

C# - 系统类 - String类的更多相关文章

  1. C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;

    ArrayList和Array的区别: 相同点:1.两者都实现了IList.ICollection.IEnumerable接口:       2.两者都可以使用证书索引访问集合中的元素,包括读取和赋值 ...

  2. Java 常用类String类、StringBuffer类

    常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...

  3. JAVA集合类简要笔记 - 内部类 包装类 Object类 String类 BigDecimal类 system类

    常用类 内部类 成员内部类.静态内部类.局部内部类.匿名内部类 概念:在一个类的内部再定义一个完整的类 特点: 编译之后可生成独立的字节码文件 内部类可直接访问外部类私有成员,而不破坏封装 可为外部类 ...

  4. java常用类-String类

    * 字符串:就是由多个字符组成的一串数据.也可以看成是一个字符数组. * 通过查看API,我们可以知道 * A:字符串字面值"abc"也可以看成是一个字符串对象. * B:字符串是 ...

  5. java 中的Number类 Character类 String类 StringBuffer类 StringBuilder类

    1. Number类 Java语言为每一个内置数据类型提供了对应的包装类.所有的包装类(Integer.Long.Byte.Double.Float.Short)都是抽象类Number的子类.这种由编 ...

  6. 字符串类String类的判断功能

    StringDemo.java /* * Object:是类层级结构中的根类,所有的类都直接或间接的继承自该类. * 如果一个方法的形式参数是Object,那么这里我们就可以传递它的任意的子类对象. ...

  7. [常用类]String 类

    String 字符串是常量,一旦被赋值,就不能被更改. String str = “abc”: // "abc" 可以堪称是一个字符串对象 str = “def“: // 当把 & ...

  8. 常用类.String类

    package 常用类.String;import java.util.Arrays;import java.util.Locale;public class demo01 { public stat ...

  9. java11-1 最常见的类 String类

    字符串:就是由多个字符组成的一串数据.也可以看成是一个字符数组. 通过查看API,可以知道 A:字符串字面值"abc"也可以看成是一个字符串对象. B:字符串是常量,一旦被赋值,就 ...

随机推荐

  1. 浅析Android的窗口

    一.窗口的概念 在开发过程中,我们经常会遇到,各种跟窗口相关的类,或者方法.但是,在 Android 的框架设计中,到底什么是窗口?窗口跟 Android Framework 中的 Window 类又 ...

  2. java的异常处理机制(try…catch…finally)

    1 引子try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话.不信 ...

  3. 【HDOJ】1058 Humble Numbers

    简单题,注意打表,以及输出格式.这里使用了可变参数. #include <stdio.h> #define MAXNUM 5845 #define ANS 2000000000 int b ...

  4. win7无法识别U盘,驱动信息:该设备的驱动程序未被安装。 (代码 28)

    台式机的win7 64位系统可以识别u盘,但笔记本的win7 64位却识别不了,说明U盘是可以用的.查看笔记本的设备管理器,发现驱动安装失败,提示信息为“该设备的驱动程序未被安装. (代码 28) ” ...

  5. windows安装PHP5.4.8+Apache2.4.3+Mysql5.5.28

    最近听说PHP5.4速度很快,所以想建立一个本地环境测试下.我打算用本地windows xp sp3下安装PHP5.4.8.Apache2.4.3和Mysql5.5.28. 首先去下载PHP.Apac ...

  6. 通过Java SE 7自带的监控服务(WatchService API)实现类似.NET FileWatcher的功能

    Java SE 7 Tutorial中增加了一个监控目录变更情况的示例,用于介绍其新发布的WatchService API. 但对于用惯了.NET FileWatcher的用户而言,如果用于项目我认为 ...

  7. Spark的几种运行模式

    1.local单机模式,结果xshell可见:./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[1 ...

  8. java常见机试题目(1)

    好久没写博客了,今天重新开始,发现自己学习的知识很糙,就是知道,也能说出来,但是很多知识点不清晰,不深入,所以呢,写个博客总结一些程序,理清概念. 1java中大小写字母转化,在java中存在api ...

  9. [转载]DOS循环:bat/批处理for命令详解 (史上虽详尽的总结和说明~~)

    --本文来源于TTT BLOG: http://www.yoyotao.net/ttt/, 原文地址:http://www.yoyotao.net/ttt/post/139.html 前言: 虽然以前 ...

  10. hive0.11的编译/安装/配置

    一.获取hive 0.11文件 1.直接在apache网站下载release版 2.自己下载源码编译.方法: git clone https://github.com/amplab/hive.git ...