一、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. 算法 python实现(一) 基本常识

    我算法和数据结构都不好,笨的一比. 现在的目标是熟悉常见和经典算法,看本站两个大牛的博客,在这也推荐一下,特别好,除了算法其他的技术也很不错. Vamei : http://www.cnblogs.c ...

  2. 作品第一课----循环改变DIV颜色

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. JavaScript高级程序设计24.pdf

    Element类型 Element类型用于表现XML或HTML元素,提供对元素标签名.子节点及特性的访问,它具有以下特征 nodeType的值为1: nodeName的值为元素的标签名: nodeVa ...

  4. msm8610 lcd driver code analysis

    ---恢复内容开始--- 1  lcd probe The probe sequence is determined by compilation sequence: mdss-mdp3-objs = ...

  5. 系统内存和CPU管理、监控

    本博文的主要内容有 .系统内存管理.监控:vmstat和free -mt .系统CPU管理.监控:sar -u.mpstat.uptime linux系统内存和CPU是在系统运行的过程中不断消耗的资源 ...

  6. CentOS搭建GIT服务器【一】-仓库搭建以及基于gitosis的SSH方式访问

    1.安装GIT核心 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel gcc g ...

  7. 机器学习笔记1——Linear Regression with One Variable

    Linear Regression with One Variable Model Representation Recall that in *regression problems*, we ar ...

  8. Java集合类总结

    Java的集合类关系图,摘自网络: List: 1,ArrayList:内部采用数组存储结构:随机查找效率高,增删效率低:线程不安全: 2,LinkedList:内部采用链表存储结构:增删效率高,查找 ...

  9. 在C#中如何确定一个文件是不是文本文件,以及如何确定一个文件的类型

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:在C#中如何确定一个文件是不是文本文件,以及如何确定一个文件的类型.

  10. Freemarker的常用技巧总结

    Freemarker的常用技巧总结 Freemarker视频教程 1,截取字符串 有的时候我们在页面中不需要显示那么长的字符串,比如新闻标题,这样用下面的例子就可以自定义显示的长度 < lt. ...