C#字符串要点(复习专用)

Wesley13
• 阅读 457

一、字符串

  • 通过string定义一个字符串,或者通过String类来创建对象。 *   通过new String() 创建有一下几种构造函数(从元数据),以此顺序创建string; * C#字符串要点(复习专用) C#字符串要点(复习专用)
    // // 摘要: // 将 System.String 类的新实例初始化为由 Unicode 字符数组指示的值。 // // 参数: // value: // Unicode 字符的数组。 [SecuritySafeCritical] public String(char[] value); // // 摘要: // 将 System.String 类的新实例初始化为由指向 8 位有符号整数数组的指针指示的值。 // // 参数: // value: // 一个指针,指向以 null 结尾的 8 位带符号整数数组。 // // 异常: // T:System.ArgumentNullException: // value 为 null。 // // T:System.ArgumentException: // 如果 value 是用 ANSI 编码的,则不能使用 value 初始化 System.String 的新实例。 // // T:System.ArgumentOutOfRangeException: // 要初始化的新字符串的长度过大,无法分配,该长度由 value 的 null 终止字符决定。 // // T:System.AccessViolationException: // value 指定的地址无效。 [CLSCompliant(false)] [SecurityCritical] public String(sbyte* value); // // 摘要: // 将 System.String 类的新实例初始化为由指向 Unicode 字符数组的指定指针指示的值。 // // 参数: // value: // 指向以 null 终止的 Unicode 字符数组的指针。 // // 异常: // T:System.ArgumentOutOfRangeException: // 当前进程并不是对所有编址字符都有读取权限。 // // T:System.ArgumentException: // value 指定了包含无效 Unicode 字符的数组,或者 value 指定了小于 64000 的地址。 [CLSCompliant(false)] [SecurityCritical] public String(char* value); // // 摘要: // 将 System.String 类的新实例初始化为由重复指定次数的指定 Unicode 字符指示的值。 // // 参数: // c: // 一个 Unicode 字符。 // // count: // c 出现的次数。 // // 异常: // T:System.ArgumentOutOfRangeException: // count 小于零。 [SecuritySafeCritical] public String(char c, int count); // // 摘要: // 将 System.String 类的新实例初始化为由 Unicode 字符数组、该数组内的起始字符位置和一个长度指示的值。 // // 参数: // value: // Unicode 字符的数组。 // // startIndex: // value 内的起始位置。 // // length: // 要使用的 value 内的字符数。 // // 异常: // T:System.ArgumentNullException: // value 为 null。 // // T:System.ArgumentOutOfRangeException: // startIndex 或 length 小于零。- 或 -startIndex 和 length 之和大于 value 中的元素数。 [SecuritySafeCritical] public String(char[] value, int startIndex, int length); // // 摘要: // 将 System.String 类的新实例初始化为由指向 8 位有符号整数数组的指定指针、该数组内的起始位置和一个长度指示的值。 // // 参数: // value: // 指向 8 位带符号整数数组的指针。 // // startIndex: // value 内的起始位置。 // // length: // 要使用的 value 内的字符数。 // // 异常: // T:System.ArgumentNullException: // value 为 null。 // // T:System.ArgumentOutOfRangeException: // startIndex 或 length 小于零。- 或 -由 value + startIndex 指定的地址相对于当前平台来说太大;即,地址计算溢出。- // 或 -要初始化的新字符串的长度太大,无法分配。 // // T:System.ArgumentException: // 由 value + startIndex 指定的地址小于 64K。- 或 -如果 value 是用 ANSI 编码的,则不能使用 value 初始化 System.String // 的新实例。 // // T:System.AccessViolationException: // value、startIndex 和 length 共同指定的地址无效。 [CLSCompliant(false)] [SecurityCritical] public String(sbyte* value, int startIndex, int length); // // 摘要: // 将 System.String 类的新实例初始化为由指向 Unicode 字符数组的指定指针、该数组内的起始字符位置和一个长度指示的值。 // // 参数: // value: // 指向 Unicode 字符数组的指针。 // // startIndex: // value 内的起始位置。 // // length: // 要使用的 value 内的字符数。 // // 异常: // T:System.ArgumentOutOfRangeException: // startIndex 或 length 小于零,value + startIndex 引起指针溢出,或者当前进程并不是对所有编址字符都有读取权限。 // // T:System.ArgumentException: // value 指定了包含无效 Unicode 字符的数组,或者 value + startIndex 指定了小于 64000 的地址。 [CLSCompliant(false)] [SecurityCritical] public String(char* value, int startIndex, int length); // // 摘要: // 将 System.String 类的新实例初始化为由指向 8 位有符号整数数组的指定指针、该数组内的起始位置、长度以及 System.Text.Encoding // 对象指示的值。 // // 参数: // value: // 指向 8 位带符号整数数组的指针。 // // startIndex: // value 内的起始位置。 // // length: // 要使用的 value 内的字符数。 // // enc: // 一个对象,用于指定如何对 value 所引用的数组进行编码。如果 enc 为 null,则假定以 ANSI 编码。 // // 异常: // T:System.ArgumentNullException: // value 为 null。 // // T:System.ArgumentOutOfRangeException: // startIndex 或 length 小于零。- 或 -由 value + startIndex 指定的地址相对于当前平台来说太大;即,地址计算溢出。- // 或 -要初始化的新字符串的长度太大,无法分配。 // // T:System.ArgumentException: // 由 value + startIndex 指定的地址小于 64K。- 或 -未能使用 value 初始化 System.String 的新实例,假定 value // 按照 enc 的指定进行编码。 // // T:System.AccessViolationException: // value、startIndex 和 length 共同指定的地址无效。 [CLSCompliant(false)] [SecurityCritical] public String(sbyte* value, int startIndex, int length, Encoding enc); View Code
*   ![](https://oscimg.oschina.net/oscnet/28b88f3b61878922a884168d2d4cce09852.jpg) ![](https://oscimg.oschina.net/oscnet/bd3de0a883b82ed5109cb316e3ee1941db6.jpg)
    
        char []cstr = { 'a','b','c','d','e'};
                    char cstr1 = 'a';
                    sbyte se = 113;
                  
                    String a = new String(cstr);
                    //
                  
                    String b = new String(&cstr1);
                
                    String c = new String(&se);
            
                    String d = new String('d',2);
              
                    String e = new String(cstr,2,3);
        
                    String f = new String(&se,0,1);
                    Console.WriteLine((int)Convert.ToChar(f)+"\n");//113
                    String g = new String(&se,0,1,Encoding.UTF8);
                    Console.WriteLine("a:{0}\nb:{1}\nc:{2}\nd:{3}\ne:{4}\nf:{5}\ng:{6}",a,b,c,d,e,f,g);
    
    View Code
    
  • string是C#基元类型(primitive),string简单来说就是编译器直接支持的数据类型。运算符(== 和 !=)是为了比较 string 对象的值, 而不是比较引用 * string a = "1234"; string b = "123"; b += "4"; Console.WriteLine(a == b);//比较值 Console.WriteLine((object)a == (object)b);//比较引用()

  •   string连接操作 (+=)

    •   缺点很明显, 操作频繁的话十分浪费内存空间的
    •   使用StringBuilder类对象方法append代替+=, 性能还有所提升
  •   null," "和string.Empty的区别

    •   null表示不引用任何变量的空引用的值,null是引用变量的默认值, 值类型变量无法使用
    •   ""表示分配一个内存为空的存储空间。
    •   string.Empty表示空字符串,并且不分配内存空间。
  •   判断字符串为空 的俩种方法

    •   x.length==0 // 无法判断为null的字符串
    •   string.IsNullOrEmpty(x)
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
PhoneGap设置Icon
参考:http://cordova.apache.org/docs/en/latest/config\_ref/images.html通过config.xml中的<icon标签来设置Icon<iconsrc"res/ios/icon.png"platform"ios"width"57"height"57"densi
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这