取得檔案名稱
Copy GetFileNameWithoutExtension(filename)); //取得副檔名以前的部分
GetExtension(filename)); //取得副檔名
Path.GetPathRoot(filename)); //取得根目錄
Path.GetFullPath(filename)); //取得路徑
抓取網頁上的資料
Copy WebClient wc = new WebClient(); //
MemoryStream ms = new MemoryStream(wc.DownloadData(RSS_Source.Address));
XDocument doc = XDocument.Load(ms);
var query = (from feed in doc.Descendants("item")
select new
{
Title = feed.Element("title").Value,
Description = feed.Element("description").Value,
Date = DateTime.Parse(feed.Element("pubDate").Value),
link = feed.Element("link").Value,
testImage = feed.Elements("image").ToArray()
}).ToArray();
List 的方法
增加項目
Copy void ListObject.Add(item);
檢查是否包含在List裡面
Copy boolean ListObject.Contains(item);
直接創建一個新的相同內容的List物件
Copy List<T> NewList = new ListObject.ToList();
字串切割
Copy string str = "hello[myfriend]";
int indexS = 0;
int indexE = 0;
indexS = str.IndexOf("[");
indexE = str.IndexOf("]");
Console.WriteLine(str.Substring(indexS+1,indexE-indexS-1));
//myfriend
假如字串都有規律
Copy str = str.Replace("hello[","").Replace("]","");
也可以得到相同效果
URL解析
參考資料:ASP.NET 如何取得 Request URL 的各個部分(https://blog.miniasp.com/post/2008/02/10/How-Do-I-Get-Paths-and-URL-fragments-from-the-HttpRequest-object.aspx )
判斷物件是否為null
參考資料:(https://msdn.microsoft.com/zh-tw/library/w4hkze5k(v=vs.110).aspx )
Copy boolean Object.Equals(obj1,obj2);
obj2 放 null
obj1 放想要測試的物件即可
判斷字串為空或者null
Copy boolean string.IsNullOrEmpty(str)
開執行緒去呼叫外部程式
Copy System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "檔案路徑";
p.StartInfo.Arguments = 參數1 + " " + 參數2;
p.StartInfo.UseShellExecute = false;
p.Start();
DataTable
參考資料:(https://dotblogs.com.tw/chjackiekimo/2014/04/03/144606 )
參考資料:(https://docs.microsoft.com/zh-tw/dotnet/framework/data/adonet/dataset-datatable-dataview/adding-data-to-a-datatable )
產生隨機字串
參考資料:(http://limitedcode.blogspot.tw/2014/06/c_14.html )
Copy string RandomPasswordString = System.Web.Security.Membership.GeneratePassword(字串長度,特殊字元數量);
時間差、兩個DateTime之間的差異
參考資料:(https://dotblogs.com.tw/skyline0217/2011/04/21/23269 )
參考資料:(https://blog.miniasp.com/post/2008/01/22/Find-the-difference-between-two-DateTime.aspx )
有Total 的 回傳值為double 沒有的 回傳值為 int 並無條件捨去
Copy TimeSpan ts = datetime1 - datetime2;
ts.days //天數 無條件捨去
ts.Hours //小時 為 (總數 % 86400) / 3600
ts.Minutes //分鐘 為 ((總數 % 86400) % 3600) / 60
ts.TotalMinutes //總分鐘 總數 / 60
抓取LocalIP
參考資料:(https://dotblogs.com.tw/mingstyle/2013/03/09/96041 )
Copy using System.Net;
// 取得本機名稱
string strHostName = Dns.GetHostName();
// 取得本機的IpHostEntry類別實體,用這個會提示已過時
//IPHostEntry iphostentry = Dns.GetHostByName(strHostName);
// 取得本機的IpHostEntry類別實體,MSDN建議新的用法
IPHostEntry iphostentry = Dns.GetHostEntry(strHostName);
// 取得所有 IP 位址
foreach (IPAddress ipaddress in iphostentry.AddressList)
{
// 只取得IP V4的Address
if (ipaddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
Console.WriteLine("Local IP: " + ipaddress.ToString());
}
}
重新導向
參考資料:(https://msdn.microsoft.com/zh-tw/library/540y83hx(v=vs.100).aspx )
Copy Response.Redirect("http://www.microsoft.com/gohere/look.htm");
將後端資料丟給前端JavaScript
KeyWord : HiddenField
拿來當作資料儲存區,後端撈取完資料,整理成JSON格式,丟進去HiddenField,再讓前端用jQuery去取出來用。
可以去參考:Brian's雜記>雜記>前端>JSON
out ref
參考資料:(https://dotblogs.com.tw/erictsaiblog/2015/05/10/151238 )
參考資料:(https://docs.microsoft.com/zh-tw/dotnet/csharp/programming-guide/arrays/passing-arrays-using-ref-and-out )
out & ref 都要先指派好變數,然後再丟去該位置接值。
差異
out 傳進去前不用初始化,但是方法內要初始化。
ref 傳進去前需要初始化,但方法內隨便用。
為控制項增加HTML 屬性
參考資料:(https://dotblogs.com.tw/mis0800/2014/02/17/144025 )
EX:點擊清空
Copy txt1.Attributes.Add("onFocus","this.value=''");
Console.ReadLine 相關
Console.ReadLine 只能讀取長度 254 (256 - 兩個字元)
倘若一行超過這個長度,有兩種方法:
1.開一個新的輸入流
參考資料:(https://blog.csdn.net/zfrong/article/details/5457600 )
Copy Stream inputStream = Console.OpenStandardInput(5000);
Console.SetIn(new StreamReader(inputStream));
string body = Console.ReadLine();
2.自己寫一個ReadLine 出來
參考資料:(https://docs.microsoft.com/en-us/dotnet/api/system.console.openstandardinput?redirectedfrom=MSDN&view=netframework-4.7.2#overloads )
成品大致上長這樣
Copy public static string ReadLineMoreLength(int size)
{
Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.Unicode;
Stream inputStream = Console.OpenStandardInput(size);
byte[] bytes = new byte[size];
int outputLength = inputStream.Read(bytes, 0, size);
//Console.WriteLine(outputLength);
char[] chars = Encoding.Unicode.GetChars(bytes, 0, outputLength);
return new string(chars);
}
我當初參考的範例中,並沒有上面那兩個編碼設定,底下的GetChars部分如下
Copy char[] chars = Encoding.UTF7.GetChars(bytes, 0, outputLength); //原先範例
char[] chars = Encoding.Unicode.GetChars(bytes, 0, outputLength); //Brian 改寫
當時會導致字串中的中文變成亂碼,後來參考了一些資料後,改寫成上面那樣,就正常了。
參考資料:(https://stackoverflow.com/questions/9502488/reading-unicode-from-console/9555255 )
參考資料:(https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding?view=netframework-4.7.2 )
同場加映:
字串編碼問題、比對
參考資料:(https://dotblogs.com.tw/yc421206/archive/2011/06/09/27596.aspx )