C#實現字元替換的三種方法
阿新 • • 發佈:2019-02-15
最簡單粗暴的方法
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:雲都小生