分享給大家看一下..
兼任的偽善者,part-time的故事家,業餘的code generator,不服輸的夢想家,長不大的幼稚鬼,一個撿技術破爛的中年大叔
事情是這樣子的(抖哥如是說),因為常常會跟其他開發技術合作像是 JSP or PHP ..
他們會跟你說我們上傳檔案是這樣子的..然後給你一個Sample Code :
Client :
<form action = "http://192.168.1.100/uploadFile.jsp"
method="post" enctype="multipart/form-data">
Desc : <input type="text" name="iptDesc">
<br>
<input type="file" name="uploadFileName" />
<input type="submit" value="上傳" />
</form>
實際上,他可能是在Server這邊的內網,那我該如何這邊透過Server 端 把使用者傳給我的圖片上傳給他呢?!
這時候要透過 HttpWebRerequest 來做
最近在搞安卓,跟Server溝通是一定要的,這範例很簡單,就是我在Android 上面,透過POST 的方式傳資料給
Server ,則Server 收到值後直接回傳, Server side 是用asp.net C# 寫作..
現在直接來看Code
Server 端(C#):
建立一個echo.aspx 在aspx 得部分除了第一行全部都拿掉
只剩下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="echo.aspx.cs" Inherits="EchoService.echo" %>
不必透過程式設定..
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/imageView1"
android:textSize = "44sp"
android:text="TextView" />
上述highline的地方,單位是sp 就可以設定文字大小
問題很簡單,有很笨的做法就是跑foreach 去查,但是已經到了21世紀,可以用LINQ語法來辦到
string[] pool = "AB,B,C,D".Split(',');
// true
MessageBox.Show((pool.Any(s => "B".Contains(s)).ToString()));
//true
MessageBox.Show((pool.Any(s => "AB".Contains(s)).ToString()));
//false
MessageBox.Show((pool.Any(s => "A".Contains(s)).ToString()));
假設 這 string array 為 AB,A,C,D
之後判斷是只要這樣寫就可以了
if (StringArray.Any(s => TargetString.Contains(s)))
Windwos 8 的新版 UI ,是一個新的思維,很適合平板,但是對於這十幾年來的習慣.
一時之間難以習慣..這時候外掛出現了..
下載位址 : http://www.startbutton8.com/zh-tw/
如果還不習慣的話,快去下載吧…
假設字串是 "HELLO,IamAString" 我是搜尋 是否包含 string 這字..
會因為大小寫關係..所以可能會搜尋不到…
所以,我能想到的寫法為這幾種…
1. 使用 IndexOf 判斷
var isContain = "HELLO,IamAString".IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;
2. 先將字串轉成大寫/小寫 之後再用Contains 比對
var isContain = "HELLO,IamAString".ToUpper().Contains("STRING");
3. 使用Regular Expression
var isContain = Regex.Match("HELLO,IamAString", "string", RegexOptions.IgnoreCase).Success;
這時候我在想,哪一個效率比較好,所以做了一個很簡單的測試
我使用一個List 裡面擺物件(剛好正寫到一半的專案就進行測試)
其中的Name 我跑迴圈 放入一百萬筆資料 分別他們的Name 欄位是User1~User1000000 這時候我進行搜尋 ER5 這字串看看哪 個速度比較快
之前一篇文章 [C#] 搜尋 T 裡面是否有某屬性中有某關鍵字
提到有關於 反射找出T 是否某一Property 帶有某值..
套一句 運轉手之戀這部電影說過的話..那時候我一值在想,如果再快一點會怎麼樣?!
之前的案例..
/// <summary>/// 搜尋是否物件某屬性中是否帶有某關鍵字/// </summary>/// <typeparam name="T"></typeparam>/// <param name="lists"></param>/// <param name="propertyName">屬性名</param>/// <param name="propertyValue">是否包含某關鍵字</param>/// <returns></returns>public T[] SearchListPropertyValue<T>(List<T> lists, string propertyName, string propertyValue)
{ List<T> re = new List<T>(); returnlists.Where(
x => x.GetType().GetProperty(propertyName).GetValue(x, null).ToString().IndexOf(propertyValue, StringComparison.OrdinalIgnoreCase) >= 0).ToArray();
}
這時候我們呼叫 一個 擁有一百萬個物件的List
這需求有點詭異,但是依然就是發生了,
一個double 數值
double doubleValue = 900000000 * 9000000000 + 9000000000;答案是 8.100000009E+18
這不是我預期的答案,就人類世界來看我希望看到的數字是 8100000009000000000
這時候要動點小手腳( 嘆氣~~
這東西是 .NET Framework 4.0 的東西..
發現這個,大概就跟發現新大陸一樣的興奮,讓我再次讚嘆 Anders Hejlsberg 之神..
這邊有MSDN : http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx
簡單看一下他方便的地方..
解別人問的問題,可不可以透過C# 來驗證某一份XML 是否符合DTD 的規範,
已經給他範例 http://msdn.microsoft.com/en-us/library/z2adhb2f.aspx
但是他說他要在一個function 內做完,因為生命週期的關係,最後非常懶得包Class 來做..
最後用這樣的解法…
順帶一提: (DTD)是一種可定義合法的XML文檔構建模塊。它使用一系列合法的元素來定義文檔的結構。
所以簡單的說DTD 可以用來驗證一個XML 是否是自己要的文法
又到了Regex 時間,因為寫Regex 方法百百種,所以有碰到就紀錄一下,
今天遇到的問題,就是如何知道這網頁內容是啥東西,當然我可以用這招..Regex筆記- 移除所有HTML tag + 移除 JavaScript
但是這內容很多,所以我決定從網頁META 內容下手,如果沒有再去取<TITLE> 裡面的資料,在沒有真的去抓CONTENT
但是現在越來越多人會去寫META 了 ..
通常網頁來說 META 會長這樣..
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="discription" content="當麻許Silverlight學習筆記" />
<meta name="keywords" content="六月羊,當麻許,Silverlight,D小調,C#" />
<meta name="keywords" content="C#,ASP.net,Regex" />
<meta name="author" content="當麻許" />
<meta name="description" content="最近公司需求,需要parse 一些資料,就趁這機會筆記一下..需求是找出網頁中,所有的超連結位置.." />
所以name 跟 content 這屬性是我要的..