类库探源——System.String
一、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的更多相关文章
- 类库探源——System.Delegate
一.MSDN 描述 Delegate 类:表示委托,委托是一种数据结构,它引用静态方法或引用类实例及该类的实例方法.(是不是感觉很像C语言中的函数指针 :) ) 命名空间: System 程序集: ...
- 类库探源——System.Configuration 配置信息处理
按照MSDN描述 System.Configuration 命名空间 包含处理配置信息的类型 本篇文章主要两方面的内容 1. 如何使用ConfigurationManager 读取AppSetting ...
- 类库探源——System.Drawing.Bitmap
一.System.Drawing.Bitmap Bitmap 类: 封装GDI+ 位图,此位图由图形图像及其属性的像素数据组成.Bitmap 是用于处理由像素定义的图像的对象 命名空间: System ...
- 类库探源——System.Drawing
一.System.Drawing 命名空间简述 System.Drawing 命名空间提供访问 GDI+ 的基本功能,更高级的功能在 System.Drawing.Drawing2D,System.D ...
- 类库探源——System.ValueType
一.MSDN描述 ValueType 类:提供值类型的基类 命名空间: System 程序集: mscorlib.dll 继承关系: 值类型包括:字符.整数.浮点.布尔.枚举.结构(其实字符.整数 ...
- 类库探源——System.Exception
一.MSDN描述 Exception 类: 表示在应用程序执行期间发生的错误 命名空间 : System 程序集: mscorlib.dll 继承关系: 常用属性(含字段)和方法: 1. 属性Me ...
- 类库探源——System.Type
一.MSDN 描述 Type 类:表示类型声明:类类型.接口类型.数组类型.值类型.枚举类型.类型参数.泛型类型定义.以及开放或封闭构造的泛型类型. 命名空间: System 程序集:mscorlib ...
- 类库探源——System.Math 和 Random
一.System.Math Math类:为三角函数.对数函数和其他通用数学函数提供常数和静态方法 命名空间: System 程序集 : mscorlib.dll 继承关系: 常用属性: Math. ...
- 类库探源——System.Environment
Environment 类: 提供有关当前环境和平台的信息以及操作它们的方法.此类不能被继承. 命名空间: System 程序集: mscorlib.dll 继承关系: 常用属性(字段)和方法: ...
随机推荐
- selenium webdriver 环境搭建--java
selenium java环境的安装可以分为三个部分:jdk.eclipse和selenium. jdk jdk(java development kit)是sun公司针对java开发人员的产品,是整 ...
- QT更改程序图标
方法只要几个步骤就好了,如下: 1.准备好一个ico格式的图标文件,例如demo.ico 2.创建一个rc文件, 例如demo.rc. 并copy下面代码: // Generated by ResEd ...
- 《A First Course in Probability》-chaper5-连续型随机变量-随机变量函数的分布
在讨论连续型随机变量函数的分布时,我们从一般的情况中(讨论正态分布的文章中提及),能够得到简化版模型. 回忆利用分布函数和概率密度的关系求解随机变量函数分布的过程,有Y=g(x),如果g(x)是严格单 ...
- Mitmproxy首页、文档和下载 - 支持SSL的HTTP代理 - 开源中国社区
Mitmproxy首页.文档和下载 - 支持SSL的HTTP代理 - 开源中国社区 undefined 利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 undefined
- nyoj 123 士兵杀敌(四) 树状数组【单点查询+区间修改】
士兵杀敌(四) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战 ...
- HttpClient中post请求http、https示例
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建 ...
- 阅读《effective java-第17条》遇到的问题解决与分享
问题背景 最近这2天准备重新看一遍<effective java>,发现这些经典的书籍真的是看一遍又有一遍的感受.也越来越觉的学习的过程是一个重复的过程.这次遇到的问题是在第17条中看到的 ...
- 在html使用a标签 直接下载图片 不通过后台实现直接下载
由于a标签在HTML中链接图片会被识别并打开到网页上 如果想下载这个图片的话 就需要连接到后台读取文件并生成一个头信息下载.不过可以先给a标签加上一个download属性即可直接下载了. <a ...
- java中如何使正在运行中的线程退出
终止线程的三种方法 有三种方法可以使终止线程. 1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止. 2. 使用stop方法强行终止线程(这个方法不 ...
- 用Y分钟学会X
Learn X in Y minutes是一个有趣的网站,里面列举了对很多编程语言和工具的极简教程,有各种语言版本的.