[C#] 字串頭尾移除(Trim)與取代(Replace, PadLeft, PadRight)心得筆記

字串頭尾移除(Trim)與取代(Replace, PadLeft, PadRight)心得筆記

處理字串很麻煩一件事就是判斷不要的字元跟把它移除!以往都是把字串一個一個轉字元再處理,C#提供數個方法來做這件事,這邊記錄幾個我常用到的方法~


Trim / TrimStart / TrimEnd

這三個用法相同,功能相近;TrimStart 就是去頭,TrimEnd 就是去尾,Trim 可厲害了!去頭去尾取中間!!(驚)

以下是使用範例,最後一個取自MSDN花式輸出 XD

string NoStart = "****1234";
Console.WriteLine(NoStart.TrimStart('*'));
// 輸出:1234


string NoEnd = "ABCD    ";
Console.WriteLine(NoEnd.TrimEnd(' '));
// 輸出:ABCD


string MiddleOne = "--Middle--";
Console.WriteLine(MiddleOne.Trim('-'));
// 輸出:Middle


string Fancy = "The dog had a bone, a ball, and other toys.";
char[] TrimChars = {',', '.', ' '};
string[] words = Fancy.Split();
foreach (string word in words)
	Console.WriteLine(word.TrimEnd(TrimChars));
// 輸出:The
// 輸出:dog
// 輸出:had
// 輸出:a
// 輸出:bone
// 輸出:a
// 輸出:ball
// 輸出:and
// 輸出:other
// 輸出:toys

但是以上都只能去頭去尾而已,中間有事要去掉就要用以下方法了!


Replace

這方法是將整個字串掃過只要搜索到指定字元(第一個參數)用指定字元(第二個參數)全部取代掉

所以刪除特定字元只是應用取代這個功能特性來達成,用以下範例來理解

String str = "1 2 3 4 5 6 7 8 9";
Console.WriteLine("Original string: \"{0}\"", str);
Console.WriteLine("CSV string:      \"{0}\"", str.Replace(' ', ','));

// This example produces the following output:
// Original string: "1 2 3 4 5 6 7 8 9"
// CSV string:      "1,2,3,4,5,6,7,8,9"

以上例子把 str.Replace(' ', ',') 改成 str.Replace(' ', '') 就可以把空白去除,輸出就變成 123456789

Replace 還有一個重載方法,多了第三個參數表示是否區分大小寫 (true 忽略大小寫,false 區分大小寫),第四個參數表示依照哪種系統語系處理字串

查看網路發現 Replace 還有一個多重處理字串的用法如下

b=a.Replace(" ","+").Replace("*","-");
//將空白變 + 。將 * 變 -

PadLeft / PadRight

這邊再提一下這兩個方法,用指定字元填補左側或右側讓字串字元數達到指定數目

如果指定字元數目小於原本字串字元數目,那什麼都不會發生,該字串還是保持原樣 XD

以下為範例

string str = "forty-two";

Console.WriteLine(str.PadLeft(15, '.'));
// 輸出:......forty-two

Console.WriteLine(str.PadRight(15, pad));
// 輸出:forty-two......