C#笔记[ 八 ]:String类,StringBuilder类,正则表达式
Evernote Export
.................................. String 类 ...................................
string a = String.Empty; // String.Empty:静态只读字段 等价于 ""
string b = ""; // 空字符串
string c = null; // 未分配内存空间
字符串中使用变量的方法
1. 使用String的静态方法 Format(string str,params object[] args)
privatevoidMethod(string name,string age)
{
string str = "select {0}, {1} from customer";
str = String.Format(str, name, age);
}
2. 使用 内插字符串,相当于 Format的简化 [使用 "$"将字符串标记为内插字符串]
privatevoidMethod(string name,string age)
{
string str = $"select {name},{age} from customer";
}
3. ADO.NET 中 SqlCommand的属性CommandText
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.Parameter.AddWithValue("@ukey", ukey);
判断字符串是否为空
if(s==String.Empty) 和 if(s=="")
if(s.Length==0)
if(string.IsNullOrEmpty(s))
|
属性
|
描述
|
|
|
int Length
|
获取某个字符串的字符数
[一个汉字/字母都是一个字符]
|
|
|
int a = System.Text.Encoding.Default.GetByteCount("中"); // 字节数:2
int b = "中".Length; // 字符数:1
|
||
|
|
||
|
静态方法
|
描述
|
|
|
static bool IsNullOrEmpty( string value )
|
是否为NULL或空字符串
|
|
|
static bool Equals( string str1, string str2 )
|
判断两个字符串是否相等
|
继承自 Object类,任何类型都有
|
|
static string Format(string str, params object[] args)
|
格式项填充:将指定字符串中的格式项替换成指定字符串
|
string str = "select {0},{1},{2},{3} from code";
str = String.Format(str,"id", "name","age","address");
|
|
static string Join(string str,string[] str2)
|
将字符串数组中的所有元素串起来并
用 str 来分隔每个元素
|
string[] strArray = newstring[] {"1","2","3" };
string str = String.Join(",",strArray);
|
|
|
||
|
非静态方法
|
描述
|
|
|
bool Equals( string value )
|
是否相等
|
|
|
string Trim()
|
返回一个新字符串 [去除前后空格]
|
|
|
string ToUpper()
|
返回一个新字符串 [小写字母 ---> 大写]
|
|
|
string ToLower()
|
返回一个新字符串 [大写字母 ---> 小写]
|
|
|
string[ ] Split( params char[] separator )
|
用char类型参数来分割字符串
返回一个string类型的数组
|
string str ="123\r456\r789";
string[] str1 = str.Split('r');
string str2 = str.Split('r')[0];
|
|
string[ ] Split(char[ ] separator, StringSplitOptions options);
|
用char[ ]类型参数来分割字符串
返回一个string类型的数组
|
StringSplitOptions.None拆分空字符串,放回1个元素
StringSplitOptions.RemoveEmptyEntries,不返回
|
|
string Substring(int startIndex)
|
返回从 startIndex 开始截取的子字符串
|
|
|
string Substring(int startIndex,int length)
|
返回从 startIndex 开始截取,截取 length 个字符的子字符串
|
|
|
string PadLeft(int totalWidth,char paddingChar)
string PadRight(int totalWidth,char paddingChar)
|
返回只用指定字符在左/右边填充字符串到指定长度的字符串
|
string str = "11";
str = str.PadRight(5,'0');
|
|
char[ ] ToCharArray( )
|
字符串转为char数组
|
char[ ] charArray = str.ToCharArray()
|
|
构造方法 String(char[ ] charArray)
|
通过构造方法将char数组转为字符串
|
string str = newstring (charArray)
|
|
int IndexOf(char char1)
int IndexOf(string str)
|
返回字符串中某个字符/字符串第一次出现的位置
|
|
|
int LastIndexOf(char char1)
int LastIndexOf(string str)
|
返回字符串中最后一次出现的位置
|
|
.................................. StringBulider 类 ...................................
|
可变字符串,动态改变其容量
|
|
|
构造函数
|
描述
|
|
StringBuilder()
|
|
|
StringBuilder(string value)
|
|
|
StringBuilder(int capacity,int maxCapacity)
|
capacity:初始容量; maxCapactiy:最大容量;超过max会报错
|
|
方法
|
描述
|
|
Append(string value)
Append(int value)
........
|
将其他类型的参数转换为字符串添加到末尾
|
1. String类型代表不可变字符串[ 一经赋值其值就不会改变 ],当赋于新值时,是在堆上创建一个新的对象,然后栈中的字符串指向新的对象,旧的被GC回收
使用StringBuilder来防止建立过多对象,减轻GC压力
2. 使用StringBuilder要设置有一个初始容量;
当在处理大数据的时候,可能要不断扩容,提前指定StringBuilder的长度可显著提高处理速度
3. N个字符串拼接:N比较小的时候,性能差不多,N比较大的时候,StringBuilder性能远大于 "+"
4. String类提供的方法多于StringBuilder类提供的方法
.................................. 正则表达式 ...................................
|
正则表达式:不是 C#特有的 表示方法:表示的字符+次数
|
||||
|
元字符
|
描述
|
|
表示次数的字符
|
描述
|
|
^
|
正则表达式的开始
|
|
*
|
0次或多次
|
|
$
|
正则表达式的结束
|
|
+
|
1次或多次
|
|
\b
|
正则表达式的开始 / 结束
|
|
?
|
0次或1次
|
|
\d
|
数字
|
|
{n}
|
n次
|
|
\w
|
数字、字母、下划线
|
|
{n,M}
|
n次到M次
|
|
\s
|
空格
|
|
{n,}
|
n次以上
|
|
.
|
匹配除换行符以外的所有字符
|
|
|
|
|
|
||||
|
Regxe类提供的正则表达式表示方法
|
|
|
||
|
构造函数
|
描述
|
|
|
|
|
Regex(string str)
|
str是正则表达式,规定的格式
|
|
||
|
非静态方法
|
描述
|
|
|
|
|
bool IsMath(string str)
|
str是否满足正则表达式
|
|
||
|
x|y
|
匹配 x或y
|
|
|
|
|
[xyz]
|
匹配集合中的任意一个字符
|
|
|
|
|
[a-z] 、[0-9]
|
匹配范围内的任意一个字符
|
|
|
|
|
[^a-z]
|
匹配不在范围内的任意一个字符
|
|
|
|
在 C# 中使用正则表达式要使用 Regex 类
使用 Regex的非静态方法 [ boolIsMatch(string str)] 是否满足正则表达式
创建 Regex的构造方法 [ Regex(string str) ]
// 邮箱 "@" 前可以有 ".",但是 "@" 和 "." 之间要有其他字符
string email = Console.ReadLine();
Regex regex = newRegex(@"^(\w)+(\.\w)*@(\w)+((\.(\w)+))+$");
if(regex.IsMatch(email))
{
Console.Write("格式正确");
}
作者:大李子
邮箱:1185241994@qq.com
本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利

浙公网安备 33010602011771号