• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 详解C#中的string与String

详解C#中的string与String

作者:反骨仔 字体:[增加 减小] 来源:互联网 时间:2017-05-28

反骨仔 通过本文主要向大家介绍了c语言链表详解,c语言32关键字详解,c语言指针详解,c语言题库及详解答案,c语言关键字详解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

目录

  • 小写 string 与大写 String
  • 声明与初始化 string
  • string 的不可变性
  • 正则 string 与原义 string
  • string 的转义序列
  • 格式化字符串
  • 操作子字符串
  • 字符串的 null 与 ""(空)
  • 可提高性能的 StringBuilder 

序

字符串是 String 类型的对象,它的值是文本。 在内部,文本被存储为 Char 对象的顺序只读集合。 C# 字符串末尾没有以 null 结尾的字符;因此 C# 字符串可以包含任意数目的嵌入式 null 字符(“\0”)。 字符串的 Length 属性代表它包含的 Char 对象的数量,而不是 Unicode 字符的数量。 若要访问字符串中的各个 Unicode 码位,请使用 StringInfo 对象。

小写 string 与大写 String

在 C# 中,关键字 string 是 String 的别名。 因此,String 与 string 等效,也就是说您想用哪个就用哪个。String 类提供了很多用于安全地创建、操作和比较字符串的方法。此外,C# 语言还重载某些运算符来简化常见的字符串操作。

声明与初始化 string

请看示例:

static void Main(string[] args)
    {
      // 声明但不初始化 
      string msg1;
      // 声明并初始化为 null 
      string msg2 = null;
      // 作为一个空字符串进行初始化,用 Empty(空) 常量而不是字面值的 ""(空)
      string msg3 = String.Empty;
      // 用正则的字符串字面值进行初始化 
      string oldPath = "c:\\windows";
      // 直接以字符串初始化 
      string newPath = @"c:\windows";
      // 也可以使用 System.String
      String content = "Hello World!";
      // 使用 const 防止 msg4 被篡改
      const string msg4 = "I'm const!";
      // 可以使用隐式类型 var
      var msg5 = "Hi!";
      // 使用 String 构造器进行初始化
      char[] letters = { 'A', 'B', 'C' };
      string alphabet = new String(letters);
      Console.Read();
    }
</div>

【注意】除了在使用字符数组初始化字符串时以外,不要使用 new 运算符创建字符串对象。

使用 Empty 常量值初始化字符串可新建字符串长度为零的 String 对象。零长度字符串的字符串表示形式为 ""。使用 Empty 值(而不是 null)初始化字符串可以降低发生 NullReferenceException 的可能性。我们常常会在尝试访问字符串之前使用静态 IsNullOrEmpty(String) 方法验证字符串的值。

string 的不可变性

字符串对象是不可变的:即它们创建之后就无法更改。 所有看似修改字符串的 String 方法和 C# 中的运算符,实际上都以新字符串对象的形式返回结果。 在下面的示例中,当连接 s1 和 s2 的内容以形成一个字符串时,不会修改两个原始字符串。 += 运算符会创建一个包含组合内容的新字符串。 这个新对象赋给变量 s1,而最初赋给 s1 的对象由于没有其他任何变量包含对它的引用而释放,将在后续被垃圾回收。

示例一:

static void Main(string[] args)
    {
      var s1 = "Hi!";
      var s2 = "Fanguzai!";
      //拼接 s1 和 s2,并且修改 s1 指向的值
      s1 += s2;  //即 s1 = s1 + s2;
      Console.WriteLine(s1);
      Console.Read();
    }
</div>

图:var s1 = "Hi!"; var s2 = "Fanguzai!";

图:s1 = s1 + s2; 重新修改 s1 的指向

由于“修改”字符串实际上是创建一个新字符串,因此创建对字符串的引用时必须谨慎。 如果创建了对字符串的引用,然后“修改”原始字符串,则该引用指向的仍是原始对象,而不是修改字符串时创建的新对象。

static void Main(string[] args)
    {
      var s1 = "Hi! ";
      var s2 = s1;
      //在 s1 重新赋值后,这次没有重新修改 s2 指向的值
      s1 += "Fanguzai!";  //即 s1 = s1 + "Fanguzai!";
      Console.WriteLine(s2);
      Console.Read();
    }
</div>

图:var s1 = "Hi!"; s2 = s1; 他们指向相同的引用地址

图:s1 = s1 + "Fanguzai!"; 会创建一个没有引用的 "Fanguzai!",并重新修改 s1 指向的值。

正则 string 与原义 string

如果必须嵌入 C# 提供的转义符,则应使用正则字符串:

static void Main(string[] args)
    {
      var coluString = "Col1\tCol2\tCol3";
      var rowString = "Row1\r\nRow2\r\nRow3";
       
      Console.WriteLine(coluString);
      Console.WriteLine("=====");
      Console.WriteLine(rowString);
      Console.Read();
    }
</div>

如果字符串文本包含反斜杠字符(例如在文件路径中),为方便起见和提高可读性,应使用原义字符串。由于原义字符串保留换行符作为字符串文本的一部分,因此可用于初始化多行字符串。在原义字符串中嵌入引号时请使用双引号。下面的示例演示原义字符串的一些常见用途:

static void Main(string[] args)
    {
      var path = @"C:\Windows";
      var text = @"Are you Fanguzai?
            I'm Fanguzai!";
       
      Console.WriteLine(path);
      Console.WriteLine("=====");
      Console.WriteLine(text);
      Console.Read();
    }
</div>

string 的转义序列

【备注】编译时,原义字符串转换为所有转义序列均保持不变的普通字符串。因而,如果在调试器监视窗口中查看原义字符串,则看到的将是编译器添加的转义字符,而不是源代码中的原义版本。 例如,原义字符串 @"C:\temp.txt" 在监视窗口中将显示为 "C:\\temp.txt"。

格式化字符串

格式字符串是内容可以在运行时动态确定的一种字符串。采用以下方式创建格式字符串:使用静态 Format 方法并在大括号中嵌入占位符,这些占位符将在运行时替换为其他值。

private static void Main(string[] args)
    {
      const string name = "Fanguzai";
      var s = string.Format("Hi, {0}!", name);  //使用占位符

      Console.WriteLine(s);
      Console.Read();
    }
</div>

操作子字符串

子字符串是包含在字符串中的任意字符序列。 使用 Substring 方法可以基于原始字符串的一部分创建新字符串。 可以使用 IndexOf 方法搜索子字符串的一个或多个匹配项。 使用 Replace 方法可将指定子字符串的所有匹配项替换为一个新字符串。 与 Substring 方法一样,Replace 实际上返回的也是新字符串,而不修改原始字符串。

private static void Main(string[] args)
    {
      const string s1 = "Hi, Fanguzai!";
      Console.WriteLine(s1.Substring(4));  //截取
      Console.WriteLine(s1.Replace("Hi","Hello"));  //替换
      Console.WriteLine(s1.IndexOf(",", StringComparison.Ordinal));  //取索引
      Console.Read();
    }
</div>

字符串的 null 与 ""(空)

空字符串是不包含字符的 System.String 对象的实例。 在各种编程方案中经常会使用空字符串表示空白文本字段。 可以对空字符串调用方法,因为它们是有效的 System.String 对象。

var s = string.Empty;

相反,null 字符串并不引用

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解C#中三个关键字params,Ref,out
  • 详解三种C#实现数组反转方式
  • 详解C# 利用反射根据类名创建类的实例对象
  • 详解C#用new和override来实现抽象类的重写区别
  • 详解C#把DataTable中数据一次插入数据库的方法
  • 详解c# 类的构造方法
  • 详解C#多线程之线程同步
  • 详解C#中 Thread,Task,Async/Await,IAsyncResult的那些事儿
  • 详解C#中的委托
  • 详解C#中的out和ref

相关文章

  • 2018-03-0130分钟LINQ教程
  • 2017-05-28C#异步委托调用实例分析
  • 2017-05-28C# ping网络IP 实现网络状态检测的方法
  • 2017-05-28C#中new和override的区别个人总结
  • 2017-05-28C#实现让ListBox适应最大Item宽度的方法
  • 2017-05-28c#文件的I/O基本操作
  • 2017-05-28C#如何实现图片查看器
  • 2017-05-28C#运行时相互关系浅析
  • 2017-05-28C#实现随鼠标移动窗体实例
  • 2017-05-28C# Console类的具体用法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c# socket编程udp客户端实现代码分享
    • C#如何通过RFC连接sap系统
    • 读写XML文件的内容并将其显示在ListView控件上的方法
    • C#常用的数据格式转换汇总
    • WPF自动隐藏的消息框的实例代码
    • C# 获取汉字的拼音首字母
    • C#设置右键菜单的方法
    • 使用C#获取远程图片 Form用户名与密码Authorization认证的实现
    • windows中使用C# 调用 C语言生成的dll
    • C#中String StringBuilder StringBuffer类的用法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有