C#实现字符替换的三种方法

来源:互联网 发布:手机淘宝好评在哪里写 编辑:程序博客网 时间:2024/05/29 08:00

Author:云都小生


最简单粗暴的方法


C#封装了Replace的方法,这个方法及其它的参数是这样的。

string Replace(替换的目标,替换的字符串)

返回值是替换后的字符串

string str = "11xx1111x";Console.WriteLine("原字符串是:{0}",str);Console.Write("请输入需要替换的字符串:");string oldStr = Console.ReadLine();Console.Write("请输入替换的字符串:");string newStr = Console.ReadLine();str = str.Replace(oldStr,newStr);Console.WriteLine("替换后的字符串:{0}", str);


比较简单粗暴的方法


using System.Text.RegularExpressions;Console.Write("请输入一个字符串:");string str = Console.ReadLine();Console.Write("要修改的字符或字符串是:");string oldStr = Console.ReadLine();Console.Write("要修改为:");string newStr = Console.ReadLine();string[] newStrs = Regex.Split(str, oldStr);string newString = string.Join(newStr,newStrs);Console.WriteLine(newString);

首先用Split方法把字符串按照oldStr分割开,这个时候会返回字符串数组。接着再用join方法,在每个字符串结尾插入oldStr。

例如说111x1111x111,按照x分割之后变成了一个字符串数组,元素分别是:111、1111、111。

join方法可以在这个字符串数组的每个结尾增加另一个字符串,这个时候返回的是一个string。


比较考验逻辑的方法



这个是我们指导员上课提到的题目,用现有的字符串方法,包括Split、IndexOf、 Substring,实现字符串替换。

怎么去做呢?

static string Replace1(string str,string oldStr,string newStr){    Console.WriteLine("将字符串中的{0}替换成{1}···",oldStr,newStr);    StringBuilder strBuffer = new StringBuilder();    int start = 0;    int tail = 0;    //一旦找不到需要替换的字符串(第一次IndexOf返回-1)    //就说明没有该关键字符串,可以直接返回之前的字符串    if (str.IndexOf(oldStr) == -1)    {        Console.WriteLine("没有找到需要替换的关键字符串!");        return str;    }    //每次都不断循环,查找这个x    //一旦找到了,就把它之前和上一个x之后的字符串拼接起来    while(true)    {        start = str.IndexOf(oldStr,start);        if (start == -1)        {            break;        }        strBuffer.Append(str.Substring(tail,start-tail));        strBuffer.Append(newStr);        start += oldStr.Length;        tail = start;    }    //查找到最后一个位置之后    //还要把剩下的字符串拼接进去    strBuffer.Append(str.Substring(tail));    return strBuffer.ToString();}

可以看到我这里用了StringBuilder的类,拼接字符串效率更高。

2017/12/14 11:54:43 @Author:云都小生

原创粉丝点击