string的学习
* 正则表达式
* 比如说:
* 账号验证(包含英文字母,特殊符号,数字,6位以上长度);
* 邮箱验证
* 电话验证
class MainClass
{
/// <summary>
/// 获取字符串长度
/// </summary>
public void Test1(){
//无论英文,特殊符号还是中文,长度都是1个字节.
string s = "你好中国xxx,";
Console.WriteLine("字符串长度为:" + s.Length);
}
/// <summary>
/// 字符串中查找字符串
/// </summary>
public void Test2(){
//返回-1证明查不到
//如果能查到,返回的是该字符或者字符串在字符串中索引位置
string s = "就是HFDJasdgajSGDasjgdhagshjdg不方便大家就卡死的";
int i = s.IndexOf('F',3,1);
Console.WriteLine (i);
}
/// <summary>
/// 字符串提取,截取指定范围内的字符串
/// </summary>
public void Test3(){
string s = "你好吗,我的母亲中国好棒!";
string temp = s.Substring(0,9);
Console.WriteLine (temp);
}
/// <summary>
/// 字符串替换
/// </summary>
public void Test4(){
string s = "淫露,你好你妈个x,草曹操肏";
string newStr = s.Replace("淫","*");
Console.WriteLine (newStr);
//分几种:1.亲戚
// string pattern = @"[淫银瘾]|[草曹操肏]|[爹妈姑舅爷]";
// string newStr = Regex.Replace (s, pattern, "*");
// Console.WriteLine (newStr);
}
/// <summary>
/// 字符串插入(指定位置)
/// </summary>
public void Test5(){
string s = "你好,中国";
string newStr = s.Insert(0,"china");
Console.WriteLine (newStr);
}
/// <summary>
/// 判断字符串以什么什么结尾
/// </summary>
public void Test6(){
string s = "你好,中国";
bool b = s.EndsWith("中国");
if (b) {
Console.WriteLine ("是以中国结束");
}
}
/// <summary>
/// 字符串按照索引位置移除
/// </summary>
public void Test7(){
string s = "你好,中国";
string newStr = s.Remove(1,1);
Console.WriteLine (newStr);
}
/// <summary>
/// 字符串拼接
/// </summary>
public void Test8(){
string s = "你好";
s += "中国";
Console.WriteLine (s);
}
/// <summary>
/// 判断字符串是否相等
/// </summary>
public void Test9(){
string s1 = "你好";
string s2 = "你好1";
string s3 = "你好2";
// if (s1 == s2) {
// Console.WriteLine ("相等的字符串");
// }
if(string.Equals (s1, s2)){
Console.WriteLine ("字符串s1和s2相等");
}
}
/// <summary>
/// 字符串转换值类型
/// </summary>
public void Test10(){
string s = "123.";
// int i = int.Parse(s);
int result = 0;
bool l = int.TryParse (s, out result);
if (l) {
Console.WriteLine ("转换成功!~" + result);
} else {
throw new Exception ("传入数据包含非法字符,请处理!");
}
}
//练习1:判断字符串lm13142005@qq.com是否为合法邮箱
string email = "lm13142005qq.@com";
int indexAt = -1;
int indexDot = -1;
indexAt = email.IndexOf ("@");
indexDot = email.IndexOf (".");
if (indexAt != -1 && indexDot != -1) {
if (indexAt < indexDot) {
Console.WriteLine ("输入email!");
}
}
匹配邮箱xxx@xxx.xxx
string email = "l@qqq.com";
string pattern = @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+";
if (Regex.IsMatch (email, pattern)) {
Console.WriteLine ("合法邮箱");
} else {
Console.WriteLine ("不合法邮箱");
}
/*
* 学习stringbuilder:目的解决拼接字符串产生的滞留性。
* string类有不可改变性,每次执行字符串拼接的时候,实际上都会产生一个新的字符串对象
* stringbuilder类解决了对字符串重复修改过程中产生大量对象的问题
* 初始化带有capacity来控制容量大小,并且允许我们修改容量的大小
如果初始化是默认构造函数初始化的sb对象,那么默认capacity的大小为16
C#5.0版本capacity成倍增长
C#4.0版本之下的,拼接长度超出容量的时候翻一倍,如果没超过就是默认值16
*
public static void Main (string[] args)
{
// 初始化带有capacity来控制容量大小,并且允许我们修改容量的大小
// 如果初始化是默认构造函数初始化的sb对象,那么默认capacity的大小为16
// C#5.0版本capacity成倍增长
// C#4.0版本之下的,拼接长度超出容量的时候翻一倍,如果没超过就是默认值16
// StringBuilder sb=new StringBuilder();
// string a = "你好";
// string b = "中国";
//
// sb.Append (a);
// sb.Append (b);
// //结论
// //容量大小没有超过64,实际容量大小为64
// //容量>64就是实际容量大小
// Console.WriteLine ("没拼接之前sb的容量为:{0}",sb.Capacity);
// Console.WriteLine ("没拼接之前sb的长度为:{0}\"",sb.Length);
//C#5.0 下面这种初始化方式,容量大小取决于初始化字符串的长度
//C#5.0 以下跟上面情况相同
// string s = "你好";
// StringBuilder sb=new StringBuilder();
// Console.WriteLine (sb.Capacity);
// StringBuilder sb=new StringBuilder("双击,");
// sb.Append ("{0}", 666);
// Console.WriteLine (sb.ToString());
string s="你好,中国";
StringBuilder sb=new StringBuilder();
sb.Append (s);
sb.Insert (1, "adf");
Console.WriteLine (sb.ToString());
sb.Remove (1, 1);
Console.WriteLine (sb.ToString());
sb.Replace ("好", "*");
Console.WriteLine (sb.ToString());
Console.ReadLine ();
//
}