1. 程式人生 > >C#實現字元替換的三種方法

C#實現字元替換的三種方法

最簡單粗暴的方法

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