一、MSDN描述

String 类: 表示文本,即一系列的 Unicode 字符

命名空间 : System

程序集 : mscorlib.dll

继承关系:

备注:

1. 字符串是 Unicode 字符的有序集合,用于表示文本。String 对象是 System.Char 对象的有序集合,用于表示字符串。

2. String 对象的值是该有序集合的内容,值不可变,所以String对象称为不可变的

string str1 = ""+"b"; 这句话设计到1个String对象

using System;
class App
{
static void Main()
{
// 这段代码会创建3个 string 对象
string str = "a";
str += "";
str += "";
Console.WriteLine(str.Length);
}
} /*
.method private hidebysig static void Main() cil managed
{
.entrypoint
// 代码大小 32 (0x20)
.maxstack 2
.locals init (string V_0)
IL_0000: nop
IL_0001: ldstr "a"
IL_0006: stloc.0
IL_0007: ldloc.0
IL_0008: ldstr "1"
IL_000d: call string [mscorlib]System.String::Concat(string,
string)
IL_0012: stloc.0
IL_0013: ldloc.0
IL_0014: ldstr "3"
IL_0019: call string [mscorlib]System.String::Concat(string,
string)
IL_001e: stloc.0
IL_001f: ret
} // end of method App::Main */ 上面的 ldstr 指令是向堆上创建字符串对象的指令

3. 对于需要频繁修改字符串值的地方,请使用 System.Text.StringBuilder

4. String 和 string 的关系: string 是 String(System.String)在C#中别名

二、System.String常用属性(含字段)和方法

属性:
Length: 获取当前 String 对象中的字符数
Empty: 表示空字符串。此字段为只读。

静态方法:
IsNullOrEmpty
IsNullOrWhiteSpace
Format
Compare

实例方法

Contains 是否包含某某字符串

StartWith 以某某字符串打头

EndWith 以某某字符串结尾

Equals 是否等于某某字符串

IndexOf 返回匹配指定字符(字符串)第一个索引

Trim 除去头尾空白字符

ToLower 变小写

ToUpper 变大写

Equals(String) 确定此实例与另一实例是否有相同的值

Split 用某个子字符将原本字符串拆分成字符数组

函数原型:public string[] Split(params char[] separator)

 using System;

 class App
{
static void Main()
{
var str = "Zheng_fei_男_26岁";
var strArray1 = str.Split('_');
var strArray2 = str.Split(new char[]{'男','_'}); // Char 是 Unicode字符
var strArray3 = str.Split('U'); // 没有匹配成功,则返回原字符串 foreach(var item in strArray1)
{
Console.WriteLine(item);
}
foreach(var item in strArray2)
{
Console.WriteLine(item);
}
foreach(var item in strArray3)
{
Console.WriteLine(item);
}
}
}

Substring 截取字串

函数原型:

1. public string Substring(int startIndex)

2. public string Substring(int startIndex,int length)

 using System;

 class App
{
static void Main()
{
var str = "Zheng_fei_男_26岁";
var childStr1 = str.Substring(,); // string 其实是 Char[] 数组下标从0取
var childStr2 = str.Substring();
Console.WriteLine(childStr1);
Console.WriteLine(childStr2);
}
}

Replace  字符串替换

函数原型:

返回一个新字符串,其中此实例中出现的所有指定 Unicode 字符都替换为另一个指定的 Unicode 字符

1. public string Replace(char oldChar,char newChar)

返回一个新字符串,其中当前实例中出现的所有指定字符串都替换为另一个指定的字符串

2. public string Replace(string oldValue,string newValue)

 using System;

 class App
{
static void Main()
{
string str = "Zheng_fei_男_26岁";
var strReplaced1 = str.Replace('_',' ');// str.Replace("_"," ");
var strReplaced2 = str.Replace("Zheng_fei","Aphasia");
Console.WriteLine(strReplaced1);
Console.WriteLine(strReplaced2);
}
}

三、StringBuilder

StringBuilder 类:表示可变字符字符串。此类不能被继承

命名空间:System.Text

程序集:  mscorlib.dll

继承关系:

常用构造器:

StringBuilder()

StringBuilder(String)

常用属性和方法:

Append(各种基础类型)

Clear 移除当前 StringBuilder 实例中的所有字符

Replace

ToString()   将此实例的值转换为 String

四、正则表达式

==2014-12-22 更新==

正则表达式又称正规表示式、正规式(Regular Expression 简称regex):描述某种规则的的字符串。

正则表达式引擎:按正则表达式(某种规则的字符串)处理(匹配、查找等操作)文本的程序

正则表达式在文本处理中很有用,主流编程语言均有正则表达式的引擎实现,

4.1 正则表达式

4.1.1 元字符(metacharacter):正则表达式中的特殊字符

4.1.2 常见的元字符及说明

代码      说明
.       匹配除换行符以外的任意字符
\w     匹配字母或数字或下划线或汉字
\s      匹配任意的字符空白符
\d     匹配数字
\b     匹配单词的开始或结束,也即单词的分界处
^      匹配字符串的开始
$      匹配字符串的结束

元字符^和$在验证输入内容时很有用,比如一个网站要求你填写QQ号必须是 5位到12位的数字时,可以使用 ^\d{5,12}$ 。

这里的{5,12}的意思是重复次数 >=5次 && <=12次

^\d{5,12}$ 与 d{5,12} 的区别:使用^和$确保整个字符串是5到12的数字;不使用^和$只能确保字符串中包含5到12连续位数字。如图:

正则测试工具为 deerChao 开发的测试工具,附下载

例1:匹配单词 Hi

正则表示内容:\bHi\b

4.1.3  转义字符

如果想查找元字符本身,就得用转义字符了,格式 \元字符,如: \. 代表匹配.

例2:匹配 Aphasia.cn

^Aphasia\.cn$

4.1.4 重复

代码     说明
*       重复零次或更多次
+       重复一次或更多次
?       重复零次或一次
{n}       重复n次
{n,}      重复n次或更多次
{n,m}     重复n到m次

例3 匹配由Hi+若干字符+Lucy组成的字符串

正则表示内容:\bHi\b.*\bLucy\b

4.1.5 方括号[]

[aeiou] 匹配原音
[-] 匹配0到9的数字 和 \d 一样
[] 匹配3或4
例4 : [-]{,} 含义是匹配字符中由连续1-9组成的4位字符
例5 : []

4.1.6 花括号(分组)

(\d{1,3}\.){3}\d{1,3} 的含义:\d{1,3}匹配1到3位的数字,(\d{1,3}\.) 匹配三位数字加上一个英文句号(这个整体就是分组)重复3次,然后在加一个1到3位的数字(\d{1,3})

如 333.444.555.666

4.1 节内容参考 : http://deerchao.net/tutorials/regex/regex.htm

4.2 C#的正则表达式引擎

4.2.1  System.Text.RegularExpressions 命名空间

System.Text.RegularExpressions 命名空间包含一些类,这些类提供对 .NET Framework 正则表达式引擎的访问

也就是在C#中用正则表达式要引用System.Text.RegularExpressions 命名空间

4.2.2 Regex类 ——表示不可变的正则表达式

命名空间:System.Text.RegularExpressions

程序集:  System.dll

继承关系:

常用构造器:

Regex()              初始化 Regex 类的新实例

Regex(String)           为指定的正则表达式初始化并编译 Regex 类的一个新实例

Regex(String, RegexOptions)   用修改模式的选项为指定的正则表达式初始化并编译 Regex 类的一个新实例

常用静态方法:

public static bool IsMatch(string input,string pattern)   指示所指定的正则表达式在指定的输入字符串中是否找到了匹配项

public static bool IsMatch(string input,string pattern,RegexOptions options) 通过枚举RegexOptions 设置筛选如IgnoreCase忽略大小写等

例子:

var charStr = "";
var ret = Regex.IsMatch(charStr, "[0-9]");
Console.WriteLine(ret == true ?"True":"False");

public static Match Match(string input,string pattern)  在指定的输入字符串中搜索指定的正则表达式的第一个匹配项

public static MatchCollection Matches(string input,string pattern) 在指定的输入字符串中搜索指定的正则表达式的所有匹配项

using System;
using System.Text.RegularExpressions; class App
{
static void Main()
{
var charStr = "Hi hhII HI Hii Hi Hi";
var ret = Regex.Matches(charStr, @"\bHi\b");
Console.WriteLine(ret);
foreach (var item in ret)
{
Console.WriteLine(item);
}
}
}

public static string Replace(string input,string pattern,string replacement)   在指定的输入字符串内,使用指定的替换字符串替换与指定正则表达式匹配的所有字符串

string source = "张三ABC李四Abc王五";
var ret = Regex.Replace(source, "abc","|", RegexOptions.IgnoreCase);
Console.WriteLine(ret);

未完

类库探源——System.String的更多相关文章

  1. 类库探源——System.Delegate

    一.MSDN 描述 Delegate 类:表示委托,委托是一种数据结构,它引用静态方法或引用类实例及该类的实例方法.(是不是感觉很像C语言中的函数指针 :) ) 命名空间: System 程序集:   ...

  2. 类库探源——System.Configuration 配置信息处理

    按照MSDN描述 System.Configuration 命名空间 包含处理配置信息的类型 本篇文章主要两方面的内容 1. 如何使用ConfigurationManager 读取AppSetting ...

  3. 类库探源——System.Drawing.Bitmap

    一.System.Drawing.Bitmap Bitmap 类: 封装GDI+ 位图,此位图由图形图像及其属性的像素数据组成.Bitmap 是用于处理由像素定义的图像的对象 命名空间: System ...

  4. 类库探源——System.Drawing

    一.System.Drawing 命名空间简述 System.Drawing 命名空间提供访问 GDI+ 的基本功能,更高级的功能在 System.Drawing.Drawing2D,System.D ...

  5. 类库探源——System.ValueType

    一.MSDN描述 ValueType 类:提供值类型的基类 命名空间: System 程序集:   mscorlib.dll 继承关系: 值类型包括:字符.整数.浮点.布尔.枚举.结构(其实字符.整数 ...

  6. 类库探源——System.Exception

    一.MSDN描述 Exception 类: 表示在应用程序执行期间发生的错误 命名空间 : System 程序集:   mscorlib.dll 继承关系: 常用属性(含字段)和方法: 1. 属性Me ...

  7. 类库探源——System.Type

    一.MSDN 描述 Type 类:表示类型声明:类类型.接口类型.数组类型.值类型.枚举类型.类型参数.泛型类型定义.以及开放或封闭构造的泛型类型. 命名空间: System 程序集:mscorlib ...

  8. 类库探源——System.Math 和 Random

    一.System.Math Math类:为三角函数.对数函数和其他通用数学函数提供常数和静态方法 命名空间: System 程序集 :   mscorlib.dll 继承关系: 常用属性: Math. ...

  9. 类库探源——System.Environment

    Environment 类: 提供有关当前环境和平台的信息以及操作它们的方法.此类不能被继承. 命名空间: System 程序集:   mscorlib.dll 继承关系: 常用属性(字段)和方法: ...

随机推荐

  1. POJ -- 3140

    #include<iostream> #include<cstdio> #include<cstring> #include<string> #defi ...

  2. sql server 是否存在内存表?

    最近开发有个需求,需要使用到函数,但是函数中需要使用case when 判断分支,其实可以放到一张表中读取分支:但是物理表需要I/O开销,几十W的数据,线上开销也是很大的,所以就想sql server ...

  3. MySQL数据库设计复习笔记及项目实战

    最近手头上有3个项目开动,其他2个都是从底层开始的,一个已经开始了一段时间的了,在小城市小团队开发的条件下,都没有专门的DBA来做数据库的设计和维护,往往都是开发人员顶上,可是看了很多的数据库的设计, ...

  4. poj 2186 Popular Cows【tarjan求scc个数&&缩点】【求一个图中可以到达其余所有任意点的点的个数】

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 27698   Accepted: 11148 De ...

  5. rman进行备份、恢复

    rman备份可以很复杂,但学习需要由浅入深,下面是最常见的几种备份.恢复方式. 备份数据的路径与大小: SQL> show parameter  DB_RECOVERY_FILE_DEST NA ...

  6. 20169210《Linux内核原理与分析》第六周作业

    这次博客分为两部分,第一部分是实验,第二部分是教材. 第一部分:实验 这周实验的内容是使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用,教学案例给的是time()获取系统时间的函数,我 ...

  7. Creating custom datatypes using the umbraco usercontrol wrapper

    本篇文章介绍的是基于UmbracoCMS技术搭建的网站所使用的相关技术. 1.      需求 Umbraco CMS的dataType中有richTexhEditor控件,但是它不是太完善,比如没有 ...

  8. Winfrom 如何安全简单的跨线程更新控件

    来源:http://www.cnblogs.com/rainbowzc/archive/2010/09/29/1838788.html 由于多线程可能导致对控件访问的不一致,导致出现问题.C#中默认是 ...

  9. MVC传递Model之TempData、ViewData、ViewBag差别及用途

    MVC使用过程中常常会用到TempData.ViewData.ViewBag三种方式,这三种什么差别呢? TempData:默认存储于Session中,可通过继承ITempDataProvider接口 ...

  10. LabVIEW设计模式系列——事件结构中值改变事件

    标准:1.将具有值改变事件的控件,放置在其事件结构的值改变页面里.