字串頭尾移除(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......