一、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. ftp服务器测试

    前台传递字符串reqbuf: ftp服务器IP\r\n端口\r\n用户名\r\n密码\r\nftp路径\r\n\r\n 解析reqbuf,重新组装成系统命令,去执行ftptest.sh脚本, 调用sy ...

  2. Bzoj 1756: Vijos1083 小白逛公园 线段树

    1756: Vijos1083 小白逛公园 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1021  Solved: 326[Submit][Statu ...

  3. 西安Uber优步司机奖励政策(2月1日~2月7日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  4. poj 2553 The Bottom of a Graph【强连通分量求汇点个数】

    The Bottom of a Graph Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 9641   Accepted:  ...

  5. asp.net redis 实战

    当开始用    var result=new RedisClient("127.0.0.1",6379,1"1111");  这个helper ,后面有并发之后 ...

  6. Yii2 验证码

    没有用默认的layout  验证码点击不会改变 下面是静态页面代码 <div class="col-sm-12 login"> <div class=" ...

  7. java读取properties

    Java读取properties文件的方法比较多,网上我最多的文章是“Java读取properties文件的六种方法”,我看了好多的文章,在读到“博客之星-熔岩”的“Java读取properties文 ...

  8. win7下jdk安装环境变量配置

    新本本,新系统,还是得把武器给装配好. 以下图文记录win7系统下的jdk的安装和配置. 1.下载jdk 地址:http://java.sun.com/javase/downloads/index.j ...

  9. jquerymobile知识点:动态ListView

    这里要讲的是jqueryMobile 中的ListView 动态的列表 <ul data-role="listview" data-inset="true" ...

  10. a href=#与 a href=javascript:void(0) 的差别

    a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP <a href="javascript:void(0)" onCl ...