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:云都小生