亂七八糟集合

用正則表達式提取指定位置的字符串值html

mp3:"http://play.test.com/media/000002/......../..............01/de66a979.mp3"正則表達式

regex = new Regex("mp3:\"(?<mp3url>[^\"]*)\""); 安全

m = regex.Match(page);網絡

return m.Result("${mp3url}");dom

 ————————————————————————————————————————————————————————————————————————————————ide

託管版本的WideCharToMultiByte函數,原始的WideCharToMultiByte的PInvoke調用能夠參看http://pinvoke.net/default.aspx/kernel32/WideCharToMultiByte.html函數

private int WideCharToMultiByte(String wideChar, out IntPtr multiByte)
{
multiByte = Marshal.StringToHGlobalAnsi(wideChar);工具

 

Int32 iNewDataLen = 0;
Byte[] byNewData = null;
bool bDefaultChar = false;
iNewDataLen = Win32.WideCharToMultiByte(Win32.CP_ACP, 0, wideChar, wideChar.Length, null, 0, IntPtr.Zero, out bDefaultChar);
byNewData = new Byte[iNewDataLen + 2];
return Win32.WideCharToMultiByte(Win32.CP_ACP, 0, wideChar, wideChar.Length, byNewData, iNewDataLen, IntPtr.Zero, out bDefaultChar);
}測試

————————————————————————————————————————————————————————————————————————————————ui

 

Form.PreviewKeyDown事件很差用,限制太多,若是要處理針對Form的鍵盤事件,能夠考慮重寫ProcessCmdKey:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)

————————————————————————————————————————————————————————————————————————————————

Tuple在Thread調用時頗有用,不須要本身再去臨時聲明結構來保存傳遞的參數,摘抄一個例子:

 

// Release : code02, 2009/05/29
// Author  : Anytao, http://www.anytao.com
public class MyRequest
{
    public Tuple<string, Uri, DateTime> GetMyRequest()
    {
        return Tuple.Create<string, Uri, DateTime>("anytao.com", new Uri("http://anytao.net/"), DateTime.Now);
    }
}

 

不過有一個問題是Tuple不能序列化,因此沒辦法用來保存配置信息,很遺憾。

————————————————————————————————————————————————————————————————————————————————

獲取給定日期是一年中的第幾周,週日做爲每週的第一天,暫時只測試了2015.1.1和2015.12.27

static int WeeksInYear(DateTime date)
{
GregorianCalendar cal = new GregorianCalendar(GregorianCalendarTypes.Localized);
return cal.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
}

————————————————————————————————————————————————————————————————————————————————

解決默認使用Random函數時產生隨機數重複的問題

static int GetRandomSeed( )
{
         byte[] bytes = new byte[4];
       System.Security.Cryptography.RNGCryptoServiceProvider rng = new       System.Security.Cryptography.RNGCryptoServiceProvider( );
       rng.GetBytes( bytes );
       return BitConverter.ToInt32( bytes , 0 );
}

————————————————————————————————————————————————————————————————————————————————

要在byte[]和其餘經常使用類型之間相互轉換,能夠用

public static short ByteToShort(byte[] b, int index = 0)
{
return BitConverter.ToInt16(b, index);
}

另外須要轉換在各類值類型之間轉換記得用Converter類

————————————————————————————————————————————————————————————————————————————————

項目使用NuGet包,出現下面錯誤的時候,若是激活了NuGet Restore以後編譯仍然有如下錯誤提示

This project references NuGet package(s) that are missing on this computer.

能夠到.csproj文件中去找到下述文本所有刪除,原始文檔出處:http://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore

<RestorePackages>true</RestorePackages>

...

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

...

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> 
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

 ————————————————————————————————————————————————————————————————————————————————

關於使用Excel組件保存Excel文件的一點經驗,在兩臺PC上測試,一臺是本身的裝了Excel 2003+Office文件轉換器(用來閱讀和保存爲高版本的Office文件的工具),一臺是同事的安裝了Excel 2010

m_objBook.SaveAs(outputFile,
XlFileFormat.xlWorkbookDefault, 
m_objOpt,
m_objOpt, m_objOpt, m_objOpt, XlSaveAsAccessMode.xlNoChange,
m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);

主要的關鍵點在於SaveAs函數中使用的FileFormat參數,以前在網絡上查到的代碼片斷使用的是XlFileFormat.xlXMLSpreadsheet,這樣保存出來的文件後綴名在兩臺PC上都是xls,在Excel 2010下打開時會提示文件後綴名和格式不符

由於使用這個參數是使用OpenXML的格式來保存Excel表格文件,也就是說這裏的xls文件實質上是xml文件,後綴名也應該是xml,雖然Excel能處理這樣的文件,不過出於穩定性和安全性的考慮會有這樣的提示,這樣不是很完美

而後我測試了XlFileFormat.xlWorkbookNormal,這樣保存出來的文件後綴名在兩臺PC上也是xls,在Excel 2010下能夠正常打開,沒有以前的提示,看起來算是OK了,可是細心的人仍然會發如今Excel 2010的正中標題處顯示有「(兼容模式)」的字樣

使用文件另存爲的方式驗證明際的文件格式,發現即便在Excel 2010下保存出來的文件格式仍然是97-2003的Excel格式,因此會有上述情形

最後測試了XlFileFormat.xlWorkbookDefault,這下可讓不一樣版本的Excel去自行選擇保存的文件格式和後綴名,也就是說在Excel 2010下的時候能存爲2010的格式,並且後綴名是xlsx,

在裝了Excel 2003+Office文件轉換器的狀況下,一樣會保存爲2010的格式,並且後綴名是xlsx(在保存的過程當中還能看到正在轉換文件的小對話框),猜想在只安裝了Excel 2003的時候應該會保存爲97-2003的Excel格式,後綴名爲xls,不過沒有實測

另外還有XlFileFormat.xlExcel9795這類的格式,能夠用來顯式指定文件格式,不過沒有實測

 ————————————————————————————————————————————————————————————————————————————————

在使用.NET中的UdpClient時,若是須要指定發包的網卡,能夠參考下面的連接:

http://stackoverflow.com/questions/1096142/broadcasting-udp-message-to-all-the-available-network-cards

 ————————————————————————————————————————————————————————————————————————————————

沒法定位程序輸入點EventSetInformation於動態連接庫ADVAPI32.dll上

初步判斷是由於安裝了Visual Studio 2015 Community版引發的,EventSetInformation這個函數至少要Windows 8才支持,在Windows 7 SP1上出問題是正常的。

UPDATE: 次日開始卸載Visual Studio 2015,結果卸載以後仍然有上述問題,因而進一步卸載了.NET Framework 4.6,結果又出現了Visual Studio 2010項目沒法打開的問題,錯誤提示和.csproj的某些配置選項有關,

因而又從新修復安裝.NET Framework 4.0和Visual Studio 2010加Visual Studio 2010 SP1,仍然有問題,因而進一步修復安裝Visual Studio 2013,這才正常打開2010的項目,並且開始碰到的異常也沒有了。

總結:不知道是Visual Studio 2015的問題,仍是Community版的問題,總之要嚐鮮仍是要當心啊,並且若是在工做機上出問題更是讓人頭痛了。

相關文章
相關標籤/搜索