字符

在.NET Framework中,每个字符都是System.Char结构的一个实例。System.Char类型很简单,提供了两个公共只读常量字段:MinValue和MaxValue。

GetNumericValue方法返回字符的数值形式。

 public static void Go() {
Double d; // 数字3
d = Char.GetNumericValue('\u0033'); // ‘3’ would work too
Console.WriteLine(d.ToString()); // Displays "3" // 普通分数 四分之一
d = Char.GetNumericValue('\u00bc');
Console.WriteLine(d.ToString()); // Displays "0.25" // 'A'是大写拉丁字母A
d = Char.GetNumericValue('A');
Console.WriteLine(d.ToString()); // Displays "-1"
}

可以使用三种技术来实现各种数值类型和Char实例的相互转换。下面按照优先顺序来列出

  • 转型(强制类型转换),最常用
  • 使用Convert类型
  • 使用IConvertible接口

system.String类型

String类型直接拍绳子Object,所以是引用类型。因此String类型总是存在在堆上,永远不会跑到线程栈。

提示:如果想换行或者回车,应该使用Environment.NewLine方式。

可以使用C#的+操作符直接将几个字符串连成一个。

最后,C#提供了一种特殊的字符串处理方式,称为逐字字符串,通常用于指定文件或目录的路径,或者与正则表达式配合使用。

String file= "c:\\Windows\\System32\\Notepad.exe";
//或者
String file = @"c:\Windows\System32\NotePad.exe";

字符串是不可变的

String对象最重要的一点就是不可变。也就是说,字符串一经创建就不可以更改。意味着,它允许在一个字符串上执行各种操作,而不实际的更改这个字符串。如果需要频繁的更改字符串,请使用StringBuilder类。

比较字符串

强烈建议使用Equals、Compare等方法,不适用CompareTo、==和!=等操作符。

字符串留用

C#默认不启用字符串留用

高效构造字符串

使用StringBuilder类。

StringBuilder sb = new StringBuilder();

有多个构造器,下面解释一些概念

  • 最大容量

    一个Int32值,指定了能放到字符串中的最大字符数

  • 容量

    指定了有StringBuilder维护的字符串的长度。如果事先知道要在StringBuilder中放入多少个字符,那么构造StringBilder时,应该自己设置容量。

  • 字符数组

    一个有char结构构成的数组,负责维护字符串的字符内容。

    public static void Go() {

    // Construct a StringBuilder to do string manipulations.

    StringBuilder sb = new StringBuilder();

    // Perform some string manipulations using the StringBuilder.

    sb.AppendFormat("{0} {1}", "Jeffrey", "Richter").Replace(" ", "-");

    // Convert the StringBuilder to a String in

    // order to uppercase all the characters.

    String s = sb.ToString().ToUpper();

    // Clear the StringBuilder (allocates a new Char array).

    sb.Length = 0;

    // Load the uppercase String into the StringBuilder,

    // and do more manipulations.

    sb.Append(s).Insert(8, "Marc-");

    // Convert the StringBuilder back to a String.

    s = sb.ToString();

    // Display the String to the user.

    Console.WriteLine(s); // "JEFFREY-Marc-RICHTER"

    }

获取对象的字符串表示:ToString

Microsoft在FCL中定义的许多类型都能同时识别几种格式。例如,DateTime类型支持用d标识短日期,用D标识长日期,用g标识常规,用M标识月日,用S标识排序,用Y标识年月。

所有内建值类型都支持C标识货币格式,用D标识十进制格式,用E标识科学记数法,用G标识常规模式,用N标识数字格式,用P标识百分数,X标识十六进制。

解析字符串来获取对象:Parse

能解析字符串的任何类型都提供了公共静态方法Parse。方法获取一个String并获取类型的实例。使用方法很简单

// 调用失败,因为解析的字符串包含空格
Int32 x= Int32.Pares(" 123",NumberStylesNone,null);

字符串作为最常用的对象,使用起来还是没有什么难度。有一些难度的听都没听说过,比如最后的安全字符串。努力吧。

C#--字符、字符串学习的更多相关文章

  1. python --- 字符编码学习小结(二)

    距离上一篇的python --- 字符编码学习小结(一)已经过去2年了,2年的时间里,确实也遇到了各种各样的字符编码问题,也能解决,但是每次都是把所有的方法都试一遍,然后终于正常.这种方法显然是不科学 ...

  2. [Clr via C#读书笔记]Cp14字符字符串和文本处理

    Cp14字符字符串和文本处理 字符 System.Char结构,2个字节的Unicode,提供了大量的静态方法:可以直接强制转换成数值: 字符串 使用最频繁的类型:不可变:引用类型,在堆上分配,但是使 ...

  3. 随机生成指定长度字符字符串(C语言实现)

    相关函数 srand(), rand()头文件#include<stdlib.h> 定义函数 int rand(void) 函数说明 rand()会返回一随机数值,范围在0至RAND_MA ...

  4. Java字符字符串类

    Java字符字符串类 Character 类 Character 类用于对单个字符进行操作.Character 类在对象中包装一个基本类型 char 的值在实际开发过程中,我们经常会遇到需要使用对象, ...

  5. 5.Java基础_Java算术/字符/字符串/赋值运算符

    /* 算术/字符/字符串/赋值 运算符 */ public class OperatorDemo01 { public static void main(String[] args){ //算术运算符 ...

  6. KMP字符串匹配学习

    KMP字符串匹配学习 牛逼啊 SYC大佬的博客

  7. rune和byte在处理字符/字符串中的应用.

    rune和byte在处理字符/字符串中的应用. 定义: rune是int32的别名,-2147483648->2147483647,常用来表示UNICODE字符集,可以用来处理包含中文/非中文的 ...

  8. Python 图片转字符画 学习笔记

    Python 图片转字符画 学习笔记 标签(空格分隔): Python 声明:此文章和所有代码是学习笔记,非原创,原文教程地址:https://www.shiyanlou.com/courses/37 ...

  9. Swift 2.0 字符串学习笔记(建议掌握OC字符串知识的翻阅)

    自己公司开现在使用OC语言在写,但Swift似乎是苹果更推荐使用的开发语言,估计也是未来开发的趋势,自己以前有接触swift,但又由于公司的项目赶,也没有时间去好好地学习这款开发语言.现在年底了,项目 ...

随机推荐

  1. HTML5 音频 <audio>

    HTML5 提供了播放音频的标准. 一.Web 上的音频 直到现在,仍然不存在一项旨在网页上播放音频的标准. 今天,大多数音频是通过插件(比如 Flash)来播放的.然而,并非所有浏览器都拥有同样的插 ...

  2. Myeclipse无法开启Servers视图解决办法

    IDE报错如下:  解决办法:1.首先关闭MyEclipse工作空间. 2.然后删除工作空间下的 “/.metadata/.plugins/org.eclipse.core.runtime/.sett ...

  3. Cesium原理篇:4Web Workers剖析

    JavaScript是单线程的,又是异步的,而最新的HTML5中,通过Web Workers可以在JS中支持多线程开发.这是几个意思?异步还是单线程,这怎么理解?Web Workers又是什么原理?实 ...

  4. 使用Microsoft Roslyn提取C#和VB.NET源代码中的字符串常量

    Microsoft Roslyn是微软.NET“编译器即服务(Compiler as a Service)”的主要产品,它提供了开放的编译器API,并为源代码产生.分析和重构提供了新一代的语言对象模型 ...

  5. 8.2 使用Fluent API进行实体映射【Code-First系列】

    现在,我们来学习怎么使用Fluent API来配置实体. 一.配置默认的数据表Schema Student实体 using System; using System.Collections.Gener ...

  6. ISS部署网站--未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root ……

    打开服务器系统c盘,打开window, 右键temp 属性 安全 编辑 添加IIS_IUSRS 用户控制权限添加修改和写入权限即可.这是Windows Server 2008 R2 标准版 SP1 6 ...

  7. header('Location:'.C('VIP_HX').'/CmdId/'.$CmdId.'/user_id/'.$user_id.'/Token/'.$Token);

    利用header函数做跳转,跳转至C('VIP_HX')配置文件中VIP_HX的地址下,携带参数CmdId 值为 $CmdIduser_id 值为 $user_idToken 值为 $Token th ...

  8. [译]Godot系列教程二 - 场景实例化(Instancing)

    场景实例化(Instancing) 原理阐述 创建一个场景并将节点扔到里面对于小项目是适用的,但随着项目不断发展,用到越来越多的节点,整个项目很快就会演化成难以管理的状态. 为了解决这个问题,Godo ...

  9. Java--对象池化技术 org.apache.commons.pool2.ObjectPool

    org.apache.commons.pool2.ObjectPool提供了对象池,开发的小伙伴们可以直接使用来构建一个对象池 使用该对象池具有两个简单的步骤: 1.创建对象工厂,org.apache ...

  10. 使用jenkins配置.net mvc网站进行持续集成一

    最近好久没有更新文章了,因为好久没有写代码了,以至于我不知道同大家分享些什么,刚好,今天突然叫我学习下jenkins每日构建,我就把今天的学习笔记记录下来,这其中很多东西都是公司同事之前调研总结的,我 ...