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.CommandText = "select * from customer where ukey =@ukey";
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
本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
 
 
 
posted @ 2021-03-07 17:06  大李子"  阅读(172)  评论(0)    收藏  举报