方法

取得檔案名稱

GetFileNameWithoutExtension(filename)); //取得副檔名以前的部分
GetExtension(filename)); //取得副檔名
Path.GetPathRoot(filename)); //取得根目錄
Path.GetFullPath(filename)); //取得路徑

抓取網頁上的資料

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 的方法

增加項目

void ListObject.Add(item);

檢查是否包含在List裡面

boolean ListObject.Contains(item);

直接創建一個新的相同內容的List物件

List<T> NewList = new ListObject.ToList();

字串切割

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

假如字串都有規律

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)

boolean Object.Equals(obj1,obj2);

obj2 放 null obj1 放想要測試的物件即可

判斷字串為空或者null

boolean string.IsNullOrEmpty(str)

開執行緒去呼叫外部程式

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)

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 並無條件捨去

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)

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)

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:點擊清空

txt1.Attributes.Add("onFocus","this.value=''");

Console.ReadLine 相關

Console.ReadLine 只能讀取長度 254 (256 - 兩個字元)

倘若一行超過這個長度,有兩種方法:

1.開一個新的輸入流

參考資料:(https://blog.csdn.net/zfrong/article/details/5457600)

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)

成品大致上長這樣

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部分如下

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)

Last updated