技巧一:依標點分行
string[] lines = "abc,defg,hijklmn,opq,rstuv".Split(',');
foreach (string s in lines) Console.WriteLine(s);
技巧二:字串反轉
char[] arr = "ABCDEFG".ToCharArray();
Array.Reverse(arr);
string rev = new string(arr); // "GFEDCBA"
技巧三:擷取字串中的數字
string input = "A23BCDEFG4Hi678";
string digits = new string(input.Where(c => char.IsDigit(c)).ToArray()); // "234678"
技巧四:尋找字元所有位置
string s = "aBcdaEFGaHIaaaK";
char target = 'a';
for (int i = 0; i < s.Length; i++)
if (s[i] == target) Console.WriteLine(i); // 0, 4, 8, 11, 12, 13
技巧五:解析檔案路徑、檔名、副檔名
string path = @"C:\gdiplus.dll";
string dir = System.IO.Path.GetDirectoryName(path); // "C:\"
string name = System.IO.Path.GetFileNameWithoutExtension(path); // "gdiplus"
string ext = System.IO.Path.GetExtension(path).TrimStart('.'); // "dll"
技巧六:RichTextBox 批次取代
int start = 0;
while ((start = rtb.Find("abc", start, RichTextBoxFinds.None)) != -1)
{
rtb.Select(start, "abc".Length);
rtb.SelectedText = "***";
start += "***".Length;
}
技巧七:空白分割存入陣列/ArrayList
string[] parts = "abc def ghiklm opq".Split(' ');
ArrayList list = new ArrayList(parts);
技巧八:DES 對稱加密
const string Key = "MyKey123"; // 8 位元組
public string Encrypt(string plain)
{
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key = des.IV = Encoding.UTF8.GetBytes(Key);
using (MemoryStream ms = new MemoryStream())
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
byte[] data = Encoding.UTF8.GetBytes(plain);
cs.Write(data, 0, data.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
}
}
技巧九:DES 解密
public string Decrypt(string cipher)
{
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key = des.IV = Encoding.UTF8.GetBytes(Key);
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(cipher)))
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read))
using (StreamReader sr = new StreamReader(cs, Encoding.UTF8))
return sr.ReadToEnd();
}
}
技巧十:null、空字串、String.Empty、DBNull.Value 差異