一、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. HTMLTestRunner 自动化测试报告

    http://tungwaiyip.info/software/HTMLTestRunner.html下载,将下载后的文件放在python的Lib目录下 # -*- coding:utf-8 -*- ...

  2. 使用jconsole检测linux服务器

    在Jboss中运行run.sh的脚本下添加如下信息: #add by step #start JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxre ...

  3. Lua 中使用面向对象(续)

    上一篇文章给了一个面向对象的方案,美中不足的是没有析构函数 Destructor,那么这一次就给它加上. 既然是析构,那么就是在对象被销毁之前做该做的事情,lua 5.1 的 userdata 可以给 ...

  4. KTV点歌系统播放原理

    北大青鸟KTV点歌系统播放原理 指导老师--原玉明 1.首先知道有两个类(PlayList   Song) PlayList类中有一方法 public static bool AddSong(Song ...

  5. How to Validate XML using Java

    Configure Java APIs (SAX, DOM, dom4j, XOM) using JAXP 1.3 to validate XML Documents with DTD and Sch ...

  6. hdoj 1269 迷宫城堡【scc基础题目】

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  7. hdu 4758 Walk Through Squares

    AC自动机+DP.想了很久都没想出来...据说是一道很模板的自动机dp...原来自动机还可以这么跑啊...我们先用两个字符串建自动机,然后就是建一个满足能够从左上角到右下角的新串,这样我们直接从自动机 ...

  8. cocos2d-x 关于opengl version too old 问题解决办法

    转载请注明出处 http://blog.csdn.net/u010229677/article/details/9704961 今天cocos2d-x突然出现这个对话框,去国外论坛找的解决办法.折腾许 ...

  9. Java 8 新特性概述

    Oracle 在 2014 年 3 月发布了 Java 8 正式版,该版本是一个有重大改变的版本,对 JAVA 带来了诸多新特性.其中主要的新特性涵盖:函数式接口.Lambda 表达式.集合的流式操作 ...

  10. <input type="radio" >与<input type="checkbox">值得获取

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...