
我已经在C#中学习了一部分字符串知识和一些正则表达式知识,并且不难分享. 如果有任何不足之处,欢迎大家提出批评和指正.
首先在string和StringBuilder之间写一些区别.
string s =“ CSDN”;其中s是定义的字符串变量,不能更改,因为字符串“ CSDN”是已存储在内存堆中的数据,而s只是堆栈. 在变量上,调用了变量s指向段堆上的数据. 如果我们使用s =“ ABC” + s;,则此语句等效于在内存堆上重新创建存储空间,将字符串“ CSDN”复制到新空间,并向其中添加“ ABC”字符串变量名 正则表达式,然后指向该变量的指针指向新打开的堆内存,并且先前创建的“ CSDN”字符串仍然存在于堆内存中,等待系统的垃圾回收程序将其销毁.
可以更改StringBuilder创建的变量. 首先,我们定义一个StringBuilder str = new StringBuilder(“ www.CSDN.com”,50);在这里,我们发现StringBuilder是一个类变量,我们需要使用新的构造函数对其进行初始化. 在初始化期间,我们可以定义其初始值和最大值. 另外,在更改变量str时,我们需要使用str.Append()函数. 此方法可以将()中的字符串添加到原始str字符串中. 此过程与字符串类之间的区别在于,它不需要重新创建存储空间. 只需在构造str时将()中的字符直接添加到创建的空间中(当然,创建的空间必须足够大,您可以将字符串放入()中).
通过上述过程,我们发现在添加字符串函数的过程中变量名 正则表达式,StringBuilder类比字符串类更有效. 另外,string只是System.String的别名,也是一个类.
在下面记录一些有关正则表达式的经验.
正则表达式是一种非常常见的检测字符串是否匹配的方法. 它定义了一些常用字符. 例如,“ ^”符号表示字符串的开头,“ $”符号表示字符串的结尾,\ d表示匹配数字[0-9],“ *”表示与零个或多个前一个元素匹配次和“ +”表示一次匹配上一个元素. “ {n}”匹配前一个元素n次,“ {n,m}”匹配前一个元素n至m次. 说到这,大多数人肯定是好斗的. 我将在下面编写一些简单的示例,希望能帮助大家理解.
示例1:
string s = Console.ReadLine(); //读取用户输入的一行字符串
字符串模式= @“ ^ \ d * $”; //然后定义一个正则表达式,并在字符串之前添加“ @”,以告知编译器这些特殊字符是字符串的一部分(如果存在),编译器将不会对其进行编译. 字符串当然用“”括起来. ^表示在开头匹配\ d(即数字[0-9]),中间的*表示该表达式可以匹配零个或多个. 并且以“ $”符号结尾意味着它必须与\ d末尾匹配.

bool isMatch = Regex.IsMatch(s,pattern); //然后使用IsMatch方法确定其是否匹配并返回布尔值
Console.WriteLine(isMatch); //最后输出结果,如果相同返回true,则差为false;
从上面的示例中,我们对正则表达式的使用有了一般的了解,那么如何限制我想限制的特殊字符呢?让我们谈谈另一个例子:
示例2:
string str =“ abcdefghijklmnopqrstuvwxyz”. //定义一个字符串,直接使用26个字母
字符串模式= @“ [abc]”; //这句话表示他匹配方括号中的任何一个字符,即abc的三个字母,每个字母都可以匹配为真.
string s = Regex.Replace(str,pattern,“ *”); //我们使用替换功能,并将匹配的字符替换为*.
Console.WriteLine(s); //输出结果
我们发现字符串中的所有abc被替换了. 方括号表示任何一个符号均已成功匹配,则视为成功匹配.

下面,我们将正则表达式更改为
字符串模式= @“ [a-e]”;
输出为:
我们发现a到e已被替换,则表达式[a-e]表示a和e之间的所有字符都与此表达式匹配.
最后,我们将正则表达式更改为
字符串模式= @“ [^ a-e]”;
输出为:
我们发现,除abcde以外的所有字母均已替换. 换句话说,符号“ ^”在这里具有否定的另一种含义.

最后,我们将给出一个示例来说明大括号{}和逻辑运算符的用法. 在正则表达式中.
示例3:
string s = Console.ReadLine(); //我们手动输入一行数字
字符串模式= @“ ^ \ d {5,12} $”;使用正则表达式确定他是否是合格的QQ号,其中{5,12}代表QQ号中的最小位数,最大QQ号数,我们需要使用正则表达式来匹配5至12次,因此我们使用{};
来限制数字
bool isMatch = Regex.IsMatch(s,pattern);
Console.WriteLine(isMatch);
我每次输入3次,您可以看到,无论输入的数字超出范围还是输入的字符包含字母,我都无法使正则表达式为真. 仅当输入的数字完全符合我们的约束条件时,返回的结果才为真.
示例4:

string s =“ zhangsan; lisi,wangwu.zhaoliu”; //定义一组用不同符号分隔的人名字符串
字符串模式= @“ [;] | [,] | [. ]”; //使用“ |”分别使用逻辑语言和(and);
string [] resArray = Regex.Split(s,pattern); //使用字符串数组存储完整的字符串.
foreach(resArray中的var s1)//使用foreach函数迭代数组元素.
{
Console.WriteLine(s1);
}
输出为:
每个人都发现我们已经根据不同的符号分割了每个字符串.
以上是我在学习C#字符串方面的经验和经验. 希望与您分享,共同进步!同时,欢迎大个子们来,等我指出错误和不足之处. 每个网友的评论都是我前进的动力!
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-154251-1.html
小男神太棒了爱你